私のウェブサイトにAjaxベースのタブ付きインターフェースが欲しいのですが。
また、タブごとにBeanが必要です。これらのBeanは、タブに入るときに「生まれる」、タブを出るときに「死ぬ
」と
予想されます。
重要-タブ間の切り替えは、ページ全体の再描画ではなく、AJAXイベントである必要があります。
この種の動作には適切な範囲だと思い@ViewScoped
ましたが、タブを離れるときにBeanを強制終了するという問題に悩まされています。私の知る限り、@ViewScoped
Beanはリダイレクト/ナビゲーションイベントでのみ死にます。
@ViewScoped
Beanを死なせる適切な方法はありますか?別のスコープを使用する必要がありますか?
ありがとう!
アップデート
この質問に対するBalusCの回答を読むことは、良い兆候です。
ビュースコープのBeanは、同じビューを操作している限り存続します(つまり、Beanアクションメソッドでvoidまたはnullを返します)。リンクをクリックするか、別のアクション結果を返すなどして別のビューに移動すると、ビュースコープのBeanはレンダリング応答の終了までに破棄され、次のリクエストで使用できなくなります。
したがって、これによれば、アクションメソッドとは異なる結果を返し、@ViewScoped
Beanを死なせることができます。
しかし、これを行うには、アクションメソッド(JSF 2暗黙的ナビゲーション)の結果の後にナビゲーションを無効にする必要があり、それを行う方法がわかりません(またはそれが私の目標を達成するための正しい方法であるかどうか)