使用primeFaces,我有以下按钮:
<p:commandButton value="Submit" action="#{createDeal.saveDeal}" update="myPanel" />这个很好用。但是,我希望使用java生成该按钮。我有以下代码:
CommandButton submit = new CommandButton();
submit.setValue("Submit");
submit.setUpdate("myPanel");
FacesContext facesCtx = FacesContext.getCurrentInstance();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = facesCtx.getELContext();
MethodExpression methodExpression =null;
methodExpression = elFactory.createMethodExpression(elContext,"#{createDeal.saveDeal}",String.class, new Class[]{});
submit.addActionListener(new MethodExpressionActionListener(methodExpression));
submit.setActionExpression(methodExpression);
createButtons.getChildren().add(submit);当我单击submit时,我的表单将验证(这是使用输入上的setRequired函数完成的),但是表单从未击中我的createDeal类。我做错了什么,内联按钮工作,但java生成的按钮不工作。
一个音符。使用primefaces创建的内联按钮在页面加载中。尝试用java添加的按钮直到Ajax调用生成表单和按钮之后才能完成。
任何援助都是有帮助的。
谢谢。
发布于 2013-09-30 16:42:05
感谢BalusC对你的帮助。我还是不知道我怎么会错过这个!以下工作:
CommandButton submit = new CommandButton();
submit.setValue("Submit");
submit.setUpdate("myPanel");
submit.setId("create"+panelClass);
FacesContext facesCtx = FacesContext.getCurrentInstance();
ELContext elContext = facesCtx.getELContext();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
MethodExpression methodExpression =null;
methodExpression = elFactory.createMethodExpression(elContext,"# {createDeal.saveDeal}",null, new Class[]{});
submit.setActionExpression(methodExpression);
createButtons.getChildren().add(submit);空指针异常无关。看起来,只需添加ID和删除ActionListener就可以了。太感激了!
https://stackoverflow.com/questions/19059471
复制相似问题