JSFアプリケーションでは、コンポーネントの状態をクライアントのレスポンスに、またはサーバーで保存できます。クライアントでの状態保存は、一部のユーザーがCookieのサポートを無効にしているために必須な場合がありまが、接続が遅いときはレスポンス時間が増加する可能性があります。サーバーに状態を保存すると、ユーザーにとってはメモリーの消費量が多くなるデメリットがありますが、帯域幅の要件は最小限に抑えられます。
開発時には、クライアント側の状態保存を使用することで、ページを変更するたびに新規ビューを確実に作成できます。javax.faces.STATE_SAVING_METHOD
を状態の保存場所に設定するには、デプロイメント・ディスクリプタweb.xml
にあるcontext-param
要素を使用します。次に例を示します。
<!-- Set JSF state saving to client -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
アプリケーションで状態をクライアントに保存する場合は、カスタム・バリデータおよびコンバータの実装によって、StateHolder
と、StateHolder
のsaveState(FacesContext)
およびrestoreState(FacesContext, Object)
メソッドを実装できます。詳細は、javax.faces.component
のStateHolder
インタフェースに関するJavadocを参照してください。
状態をクライアント側に保存すると、コンポーネント・ツリー(ビュー)全体の状態がエンコードされ、非表示フィールドとしてページに記述されます。この結果、リクエストごとに、クライアントとの間で非常に長い文字列の送受信が行われる可能性があります。ADF Facesでは、トークンを使用した効率的な(小規模な)クライアント側の状態保存方法が提供されます。クライアントに格納されたトークンは、HttpSession
に戻って格納された状態のブロックを識別します。詳細は、「ADF Facesのクライアント側の状態保存について」を参照してください。
JSFでのスコープについて
JSFのweb.xml構成について
Copyright © 1997, 2007, Oracle. All rights reserved.