2011-12-30 15 views
1

私はグリッドといくつかの詳細フィールドで構成されるJSFフォームを持っています。詳細フィールドには、グリッド内の最初の行のデータが含まれます。私は、グリッドの行の選択を聞くバッキングBeanを持っていて、新しい値を表すために詳細フィールドのバッキングBeanを更新します。ここでは問題が発生します。必要に応じて詳細フィールドを更新します(リスナはApplyRequestValuesPhaseで呼び出されます)が、後でJSFフレームワークはUpdateModelValuesPhaseで古い値を再設定します。UpdateModelValuesPhaseの前にJSFバッキングBeanの値を変更する方法は?

私の質問はどのように修正するのですか?どのようにして、グリッド選択変更イベントからいくつかのJSFコンポーネントに新しい値を割り当てることができますか?

注:これはJSF component doesn't update if changes came from grid clickのように非常に同じことについてですが、私は新しい質問を投稿理由です、私が思う今より明確に問題を参照してください。

+1

私はIceFacesをやっていませんが、まず、アクションアクションフェーズ(通常のアクションリスナ)ではなく、リクエスト値の適用時にリスナーが呼び出されるのが奇妙です。代わりに、適切な段階でリスナーを呼び出すことができます。 – BalusC

+1

これは、 'RowSelection'が' immediate'なので、http://www.icefaces.org/docs/v1_8_1/tld/ice/rowSelector.html – jabal

+0

OMG、ありがとうございますBalusC!これを非即時に設定すると問題が解決しました。私はあなたの助けを受け入れることができるように質問にお答えください(両方)。 – jabal

答えて

1

適用要求値フェーズでリスナーが呼び出されるのは正常ではありません。おそらく、immediate="true"をどこかに設定していると、リクエスト値の適用段階でアクションが実行される可能性があります。更新モデル値フェーズの直後に実行される呼び出しアクションフェーズでリスナーが呼び出されることを確認する必要があります。 immediate="false"を設定するか、属性を完全に削除してください。既定の動作です。

コメントごとに、row selectorに実際にimmediate="true"を設定したようですが、削除する必要があります。

関連する問題