背景:MyFacesを使用しているJSF 2.0アプリケーションがあります。このアプリケーションを使用すると、ユーザーはさまざまなJSFページを調べることによって、複雑な「ウィジェット」を作成します。セッションスコープにマネージドBeanを格納していて、ユーザーが各ページを通過するときにプロパティが設定されます。 「ウィジェット」の組み立てが完了したら、新しい「ウィジェット」を作成してそのプロセスを繰り返すことになります。私の質問は、JSFライフサイクルを中断することなく、マネージドBeanをセッションから完全に(安全に)削除する方法です。JSF 2.0でSessionスコープBeanを削除する方法(そしていつ?)
セッションを無効にすることができ、FacesContextを介してHttpSessionにアクセスし、そのようにBeanを削除できることを示唆する同様の質問に対するその他の回答を見ました。ユーザーにログアウトまたは再ログインをさせたくないので、セッション全体を無効にする必要はありません。 FacesContextを経由してHttpSessionにアクセスしてBeanを削除する必要があると仮定すると、JSFライフサイクルが安全にこれを実行して残りのサイクルをカスケードしないようにする最も適切な場面はいつですか?ユーザーが次の「ウィジェット」の作成プロセスを開始したときにJSFが新しいセッションBeanを作成するのに問題がないことを確認したい。
これを簡単にするためにJSFにメカニズムがない理由を知りたいと思っています。私が取るべき他のアプローチは、意図したJSFパターンに沿った方が良いでしょうか?ここでは、ビュースコープを使用することはできません。マネージドBeanは、完了する前にいくつかの異なるページとビューを通過するためです。
ありがとうございました!
ありがとうBalusC、私はこれが今の状況ではうまくいくと思います。より複雑なアプリでは、これはもっと問題になるかもしれません。セッションBeanを処理するのは本当に面倒ですか? – tcprogrammer
これでViewScope Beanを使い終わりました。ありがとう! – tcprogrammer