使用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);
当我单击提交时,我的表单将进行验证(使用输入上的setRequired函数来完成),但是该表单永远不会命中我的createDeal类。内联按钮可以正常工作,但是java生成的Java无效,这是我做错了。
一注。在页面加载中就有使用质数内联创建的按钮。直到使用Ajax调用生成两个AND表单之后,才尝试使用Java添加按钮。
任何帮助都会有所帮助。
谢谢。
感谢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一样可以解决问题。多谢!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句