2

JSF2.0Ajaxタグで非常に奇妙な問題に直面しています。以下は私にとって問題を引き起こすステップです

  1. 私のプロジェクトはJSF2.0とSpring3.0を使用しています。JSFはSpringコントローラーに接続されており、ライフサイクルはSpringによって管理されます。
  2. 私のコントローラーはリクエストスコープです。

この時点まではすべて正常に機能します

selectOneドロップダウンがあり、ドロップダウンで値を選択すると、別のドロップダウンがある画面の下部がレンダリングされます。親パネルグループでレンダリングされた属性を使用して、このドロップダウンを表示および非表示にします。

ただし、値を選択すると新しくレンダリングされたドロップダウンでは、ajaxリスナー(その中に定義されているF:ajaxタグ)は呼び出されません。私は次のことが起こっているのを見ます

  1. Beanはリクエストスコープであるため、再初期化されます。postconstructが実行されているのがわかります。
  2. クライアントのデータオブジェクトに成功メッセージが表示されます。

唯一欠けているのは、リスナーメソッドが呼び出されないことです。

ライフサイクルをデバッグして何が問題になっているのかを見つける方法はありますか?

4

1 に答える 1

1

renderedの親コンポーネントの1つの属性がajaxリクエストの処理中に<f:ajax>評価さfalseれる場合、ajaxアクションリスナーは呼び出されません。

リクエストスコープのBeanは、すべてのリクエストで再作成されるため、(ポスト)コンストラクターで初期化されない限り、そのすべてのプロパティはデフォルトにリセットされます。属性の背後にあるプロパティrenderedが一部のリクエストパラメータに基づいて適切に再初期化されていない場合false、最初のリクエストと同様に評価されます。

これを修正するには、リクエストパラメータに基づいてBeanの(ポスト)コンストラクタで適切な初期化を行うか、BeanをJSFビュースコープに配置する必要があります。

参照:

于 2012-07-27T01:51:47.563 に答える