web-dev-qa-db-ja.com

ビュースコープBeanはNavigationJSFを生き残りますか

私はビュースコープとかなり混乱しています。別のページへのJSFナビゲーション(明らかにリダイレクトなし)に耐えられると思いましたが、そうではありません。では、リクエストスコープの代わりにそれを使用する利点は何ですか?同じビューを呼び出した場合、それは同じオブジェクトになりますか?

15
Necronet

利点は、Beanが同じビューへのポストバックに耐えることです。 rendered属性で使用したり、h:dataTableのモデルとして使用したり、非表示の入力として使用したりする場合は、データを自分で保存する必要はありません。過去には、これを回避するために多くのハックが使用されていました。

ビュースコープのBeanは、同じビューを操作する限り存続します(つまり、voidまたはnullを返します。 Beanアクションメソッド)。 別のビューに移動すると、例:リンクをクリックするか、別のアクション結果を返すと、ビュースコープのBeanはレンダリング応答の終了までに破棄され、次のリクエストで使用できなくなります。

参照:

28
BalusC

Core JavaServer Faces、3rd Edition から直接リッピング:

スコープを表示

ビュースコープはJSF2.0で追加されました。同じJSFページが再表示されている間、ビュースコープ内のBeanは存続します。 (JSF仕様では、JSFページのビューという用語を使用しています。)ユーザーが別のページに移動するとすぐに、Beanはスコープ外になります。
再表示され続けるページがある場合は、このページのデータを保持するBeanをビュースコープに配置して、セッションスコープのサイズを縮小できます。これは、Ajaxアプリケーションで特に役立ちます。

9
Matt Ball

たぶんあなたはFlowScopedBeanを探しています:

フェイスフロー

JavaServerFacesテクノロジーのFacesFlows機能を使用すると、要求スコープよりも大きいがセッションよりも小さいスコープFlowScopedを持つページのセットを作成できます。範囲。 たとえば、オンラインストアでチェックアウトプロセス用の一連のページを作成したい場合があります。次のような自己完結型のページのセットを作成できます。必要に応じて、ある店舗から別の店舗に転送できます。

0
user3788872