5

セッションスコープの Bean を破棄するにはどうすればよいですか?

これの目的は、Bean の存続期間を制御して、Web アプリケーションのタブがアクティブな場合にのみ存続するようにすることです。(webapp で Ajax ベースのタブ ナビゲーションを使用)

それを行うより良い方法はありますか?(カスタム スコープ Bean?)

4

1 に答える 1

5

セッションスコープHttpRequestのBeanは、最初にこのBeanを使用して作成されます。sessionが無効になると破棄されます。HttpSession、またはsessionMap(get through )から削除して、手動で破棄することもできますFacesContext

実際には、タブビュー中にのみ存続するSessionスコープのBeanを作成するのは非論理的です。この正確な目的のために、カスタムスコープのBeanを定義する方が良いでしょうが、最初にそれについて考えてください。

  • なぜそのような機能が必要なのですか?記憶のため?

かなりトリッキーかもしれません。ユーザーがタブを頻繁に切り替えるだけで、Beanを何度も再作成していると想像してみてください。またはでDBからデータをフェッチすると、さらに悪いことになります。それは本当に効率的ではありません。constructor@PostConstruct

私の意見では、(他の目的で必要な場合を除いて)それを忘れて、ViewスコープのBeanを選択する必要があります。このBeanは、ビューにアクセスした後に初期化され、別のビューに切り替えないまで存続します。したがって、各タブスイッチでDBフェッチは行われません(同じビューのままです)。IMOは、たとえば、巨大なデータを1回フェッチする方が適切です。15回...データをフェッチしない場合は、必ずViewスコープを選択してください。しかし、それは私が言ったように私の意見です。

ビュースコープを使用する余裕がない場合は、カスタムスコープのBeanを選択しますが、セッションスコープは使用しないでください。

さらに読む:JSF2.0のBalusC

お役に立てば幸いです。

于 2012-04-15T15:21:30.853 に答える