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で生成されたボタンは機能しません。
1 つのメモ。プライムフェイスを使用してインラインで作成されたボタンは、ページの読み込み時に表示されます。Java で追加しようとしたボタンは、フォームとボタンの両方を生成するために Ajax 呼び出しが行われるまで行われません。
どんな支援も役に立ちます。
ありがとう。