【问题标题】:JSF commandButton not working when created dynamically with java使用 java 动态创建 JSF commandButton 时不起作用
【发布时间】:2013-10-04 06:21:50
【问题描述】:

使用 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 以生成表单 AND 按钮之前,尝试使用 java 添加的按钮不会完成。

任何帮助都会有所帮助。

谢谢。

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    感谢 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 就可以了。多谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多