0

dynamic が true に設定されている ap:dialog があります。コマンドボタンでは、 のように表示されるように呼んでいます<p:commandButton ajax="true" actionListener="#{bean.setCurrentElement(element)}" oncomplete="myDialog.show" update=":myForm:myDialogId"/>。ダイアログ内には、<p:selectOneMenu value="#{bean.currentElement.someId}"`

コマンド ボタンをクリックすると、アクション リスナーが null をレンダリングして完了する前に bean.currentElement にアクセスするため、コードが爆発します。を使用する<h:outputText>と、ダイアログが正しく表示されます。私のダイアログは次のように定義されています<p:dialog header="Bla" widgetVar="myDialog" modal="true" id="myDialogId" dynamic="true">

Bean は viewScoped です。アクション Listener メソッドが呼び出される前にダイアログがレンダリングされる理由。?

4

1 に答える 1

0

残念ながら、何が起こっているのかを理解する時間がありませんでした。私がやったことは、それを言えばハックでした。ビューの初期化中にクラスを作成しました。ダミー オブジェクトは get が爆発しないことを確認し、アクション リスナーはそれを適切なオブジェクトに設定してから、正しい値を取得するために再び起動されます。

なぜこれが起こっているのかを確認して確認し、結果を投稿します。

于 2013-06-04T16:32:07.663 に答える