gpt4 book ai didi

使用 java 动态创建时 JSF commandButton 不起作用

转载 作者:行者123 更新时间:2023-12-04 21:17:42 24 4
gpt4 key购买 nike

使用 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 生成的按钮无效。

一注。使用 primefaces 内联创建的按钮在页面加载时存在。在进行 Ajax 调用以生成表单和按钮之后,尝试用 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 就可以了。多谢!

关于使用 java 动态创建时 JSF commandButton 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19059471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com