誰かがそのような問題の解決策を持っていますか?
私のアプリでは、primefacesダッシュボードに基づいてプログラムで構築された複雑なダッシュボードを使用しています。ダッシュボードを構築するパネルの一意でないIDの問題を克服するために、このコンポーネントをリクエストスコープのBeanにバインドしています。また、commandButtonをクリックした後、いくつかの変更可能なパラメーターに基づいてダッシュボードを再構築したいと思います。
問題は、ダッシュボードのゲッターが、コマンドボタンのactionListenerが起動される前に(アプリケーションの呼び出しフェーズで)、リクエスト値の適用フェーズで起動されることです。そのため、ダッシュボードは最終的に再構築されますが、レンダリングされた応答では更新されません。
一方、ボタンのイミディエイト属性をtrueに設定しようとすると、actionListenerは、Apply Request Valuesフェーズで起動されますが、それでもゲッターの後で起動されます。ライフサイクルが直接レンダリング応答フェーズに進むよりも、結果は同じです。
誰?
答えてくれてありがとう。私の問題に少し詳細を追加しましょう。
スポーツトーナメントのモデルをセッションスコープのBeanのプロパティとして保存します。これは次のようになります。Beanには「トーナメント」というプロパティがあります。このクラスにはグループのリストがあり、それぞれに一致のテーブルがあります。このトーナメントモデルのレンダラーとして、プログラムで作成された3つの異なるコンポーネントを使用するというアイデアでした。
ダッシュボードは、グループでの競技者の配置のドラッグアンドドロップ版に使用されます。一致テーブルを表示し、それらの一致を編集するために、すべてのテーブルにパネルグリッドがあるタブパネルを使用します。最後に、パネルグリッドを使用してトーナメントツリーを表示します。これらの3つのコンポーネントはすべて、ユーザーが編集できるようにモデルの一部をレンダリングします。
モデル(したがって、これらのレンダリングコンポーネント)は、たとえばグループの数などの選択可能なパラメーターに基づいて動的にビルドされるため、セッションスコープのBeanにバインドするときにiduniqnesに問題がありました。そこで、リクエストスコープのBeanにバインドしました。モデル(主にajax)を変更するすべてのリクエストで、ユーザーが設定したパラメーター(セッションスコープのBeanにも格納されている)に応じて、これらのコンポーネントを再レンダリングしたいと思いました。
問題は、アプリケーションの呼び出しフェーズで(「rebuild-my-model」ボタンによって起動されたアクションリスナーで)モデルを再構築すると、リクエストスコープのBeanにバインドされたコンポーネントがすでに「取得」されていることです。 Beanから(またはそう思われる)、ページ上で更新されません。
私が間違っていることへの手がかり、そしておそらく上記のアプローチが完全に愚かであるならば、提案に非常に感謝します:)