public abstract class StateManager extends ObjectSE
StateManager は、リクエスト間でビューを保存および復元するプロセスを指示します。このクラスの実装はスレッドセーフでなければなりません。アプリケーションの StateManager
インスタンスは Application
インスタンスから取得されるため、ビューのレンダリングに使用されている RenderKit
によって作成されたマークアップ言語の詳細を知ることができません。StateManager
はヘルパーオブジェクト(ResponseStateManager
)を利用します。ヘルパーオブジェクトは RenderKit
実装によって提供されるため、マークアップ言語の詳細を認識しています。
修飾子と型 | クラスと説明 |
---|---|
class | StateManager.SerializedView 使用すべきではありません。 このクラスは、仕様の 1.0 バージョンで Serializable とマークされていませんでした。これも静的内部クラスではなかったため、Serializable にすることはできません。仕様のバージョン 1.2 では非推奨になっています。代わりに、実装に依存する Object を使用します。 |
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME ランタイムは、このパラメーターの値をビュー ID のコンマ区切りリストとして解釈する必要があります。各ビュー ID は、Jakarta Server Faces 1.2 で指定された状態保存メカニズムを使用して状態を保存する必要があります。 |
static StringSE | IS_BUILDING_INITIAL_STATE
|
static StringSE | IS_SAVING_STATE
|
static StringSE | PARTIAL_STATE_SAVING_PARAM_NAME 部分的な状態保存メカニズムを使用する必要があるかどうかを判断するためにランタイムによって参照される |
static StringSE | SERIALIZE_SERVER_STATE_PARAM_NAME このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと true が返され、jakarta.faces.STATE_SAVING_METHOD が "server" に設定されている場合(以下に示すように)、サーバーの状態は次のようになります。集約状態が java.io.Serializable を実装するように、Serializable であることが保証されています。 |
static StringSE | STATE_SAVING_METHOD_CLIENT STATE_SAVING_METHOD_PARAM_NAME によって指定された初期化パラメーターの定数値。状態の保存がクライアントで行われることを示します。 |
static StringSE | STATE_SAVING_METHOD_PARAM_NAME 状態を保存する場所を通知するために StateManager によって参照される ServletContext init パラメーター。 |
static StringSE | STATE_SAVING_METHOD_SERVER STATE_SAVING_METHOD_PARAM_NAME によって指定された初期化パラメーターの定数値。サーバー上で状態の保存が行われることを示します。 |
コンストラクターと説明 |
---|
StateManager() |
修飾子と型 | メソッドと説明 |
---|---|
protected ObjectSE | getComponentStateToSave(FacesContext context) 使用すべきではありません。 ツリー構造とコンポーネントの状態の違いは、実装の詳細になりました。デフォルトの実装は null を返します。 |
protected ObjectSE | getTreeStructureToSave(FacesContext context) 使用すべきではありません。 ツリー構造とコンポーネントの状態の違いは、実装の詳細になりました。デフォルトの実装は null を返します。 |
StringSE | getViewState(FacesContext context)
|
boolean | isSavingStateInClient(FacesContext context) 状態がクライアントに保存されているかどうかを判断するメソッド。 |
protected void | restoreComponentState(FacesContext context, UIViewRoot viewRoot, StringSE renderKitId) 使用すべきではありません。 ツリー構造とコンポーネントの状態の違いは、実装の詳細になりました。デフォルトの実装では何も行われません。 |
protected UIViewRoot | restoreTreeStructure(FacesContext context, StringSE viewId, StringSE renderKitId) 使用すべきではありません。 ツリー構造とコンポーネントの状態の違いは、実装の詳細になりました。デフォルトの実装は null を返します。 |
abstract UIViewRoot | restoreView(FacesContext context, StringSE viewId, StringSE renderKitId) 使用すべきではありません。 |
StateManager.SerializedView | saveSerializedView(FacesContext context) 使用すべきではありません。 これは saveView(jakarta.faces.context.FacesContext) に置き換えられました。デフォルトの実装は saveView を呼び出し、戻りをインスペクションします。戻り値が Object[] の場合、結果は Object[] にキャストされ、StateManager.SerializedView のインスタンスの最初と 2 番目の要素がラップされて返されます。それ以外の場合は、null を返します |
ObjectSE | saveView(FacesContext context) 使用すべきではありません。 |
void | writeState(FacesContext context, ObjectSE state) 実装に依存する方法で、指定された状態 Object インスタンスで表される状態を保存します。 |
void | writeState(FacesContext context, StateManager.SerializedView state) 使用すべきではありません。 このメソッドは writeState(jakarta.faces.context.FacesContext,java.lang.Object) に置き換えられました。デフォルトの実装では、Object[] を 2 番目の引数として渡して、非推奨ではないメソッドのバリアントを呼び出します。配列の最初の要素は getStructure() からの戻り、2 番目は引数 state の getState() からの戻りです。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE STATE_SAVING_METHOD_PARAM_NAME
状態を保存する場所を通知するために StateManager
によって参照される ServletContext
init パラメーター。有効な値は、定数の値として指定されます: STATE_SAVING_METHOD_CLIENT
または STATE_SAVING_METHOD_SERVER
。
このパラメーターを指定しない場合、デフォルト値は定数 STATE_SAVING_METHOD_CLIENT
の値です。
public static final StringSE PARTIAL_STATE_SAVING_PARAM_NAME
部分的な状態保存メカニズムを使用する必要があるかどうかを判断するためにランタイムによって参照される ServletContext
init パラメーター。
未定義の場合、ランタイムはアプリケーションのバージョンレベルを決定する必要があります。
1.2 以下でバージョン管理されたアプリケーションの場合、ランタイムは部分的な状態保存メカニズムを使用してはなりません。
2.0 以降でバージョン管理されたアプリケーションの場合、ランタイムは部分的な状態保存メカニズムを使用する必要があります。
このパラメーターが定義されていて、アプリケーションが 1.2 以下でバージョン管理されている場合、ランタイムは部分的な状態保存メカニズムを使用してはなりません。それ以外の場合、このパラメーターが定義されていて、その値の String
表現で toLowerCase().equals("true")
を呼び出すと true
が返されます。ランタイムは部分的な状態メカニズムを使用する必要があります。それ以外の場合は、部分的な状態保存メカニズムを使用しないでください。
public static final StringSE FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME
ランタイムは、このパラメーターの値をビュー ID のコンマ区切りリストとして解釈する必要があります。各ビュー ID は、Jakarta Server Faces 1.2 で指定された状態保存メカニズムを使用して状態を保存する必要があります。
public static final StringSE IS_SAVING_STATE
FacesContext
属性マップ内のマーカーは、状態を保存していることを示します。実装は、状態保存のトラバーサルを開始する前にこのマーカーをマップに 設定する必要があり、トラバーサルが完了した後、finally ブロックでマーカーをクリアする必要があります。
public static final StringSE IS_BUILDING_INITIAL_STATE
FacesContext
属性マップ内のマーカーは、初期状態をマークしていることを示すため、UIData
などのコンポーネントを反復する markInitialState()
メソッドはこの事実を認識し、子孫の初期状態を保存できます。
public static final StringSE SERIALIZE_SERVER_STATE_PARAM_NAME
このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと true が返され、jakarta.faces.STATE_SAVING_METHOD が "server" に設定されている場合(以下に示すように)、サーバーの状態は次のようになります。集約状態が java.io.Serializable を実装するように、Serializable であることが保証されています。このパラメーターの目的は、状態を ObjectOutputStream に書き出す行為が NotSerializableException をスローしないようにすることですが、ランタイムは状態を保存する前にこれを確認する必要はありません。
public static final StringSE STATE_SAVING_METHOD_CLIENT
STATE_SAVING_METHOD_PARAM_NAME
によって指定された初期化パラメーターの定数値。状態の保存がクライアントで行われることを示します。
@DeprecatedSE public StateManager.SerializedView saveSerializedView(FacesContext context)
saveView(jakarta.faces.context.FacesContext)
に置き換えられました。デフォルトの実装では、saveView
を呼び出して戻り値をインスペクションします。戻り値が Object[]
の場合、結果を Object[]
にキャストし、最初の要素と 2 番目の要素を StateManager.SerializedView
のインスタンスにラップして返します。それ以外の場合は、null
を返します。 指定された FacesContext
インスタンスに含まれるビューのツリー構造とコンポーネント状態情報を、型 StateManager.SerializedView
のオブジェクトとして返します。保存する状態情報がない場合は、代わりに null
を返します。
コンポーネントは、transient
プロパティを true
に設定することにより、直列化されたビューに含まれないようにすることができます。これにより、コンポーネント自体、そのコンポーネントのすべての子とファセットが、保存されたツリー構造とコンポーネントの状態情報から削除されます。
このメソッドは、id
が null 以外のコンポーネントの場合、同じ最も近い NamingContainer
の子孫であるすべてのコンポーネントが一意の識別子を持っている必要があるという規則も適用する必要があります。
context
- 現在のリクエストの FacesContext
IllegalStateExceptionSE
- このビューの同じ NamingContainer
内の複数のコンポーネントまたはファセットが同じ非 null
コンポーネント ID を持っている場合 @DeprecatedSE public ObjectSE saveView(FacesContext context)
このメソッドの機能は、StateManagementStrategy.saveView(jakarta.faces.context.FacesContext)
によって処理されるようになりました。後続のリクエストで現在の UIViewRoot
の状態を復元するために、この同じインスタンスに十分な情報を含む不透明な Object
を返します。返されるオブジェクトは java.io.Serializable
を実装する必要があります。保存する状態情報がない場合は、代わりに null
を返します。
コンポーネントは、transient
プロパティを true
に設定することにより、直列化されたビューに含まれないようにすることができます。これにより、コンポーネント自体、そのコンポーネントのすべての子とファセットが、保存されたツリー構造とコンポーネントの状態情報から削除されます。
このメソッドは、id
が null 以外のコンポーネントの場合、同じ最も近い NamingContainer
の子孫であるすべてのコンポーネントが一意の識別子を持っている必要があるという規則も適用する必要があります。
既存の StateManager
実装との下位互換性のために、このメソッドのデフォルトの実装は saveSerializedView(jakarta.faces.context.FacesContext)
を呼び出し、structure
プロパティを含む要素 0 と SerializedView
の state
プロパティを含む要素 1 を持つ 2 要素 Object
配列を作成して返します。
context
- 現在のリクエストの FacesContext
IllegalStateExceptionSE
- このビューの同じ NamingContainer
内の複数のコンポーネントまたはファセットが同じ非 null
コンポーネント ID を持っている場合 @DeprecatedSE protected ObjectSE getTreeStructureToSave(FacesContext context)
null
を返します。 このビューのコンポーネントツリー全体(子とファセットを含む)の構造を表す Serializable
オブジェクトを構築して返すために、saveSerializedView()
によって呼び出される必要がある便利なメソッド。
コンポーネントは、transient
プロパティを true
に設定することにより、ツリー構造への組み込みをオプトアウトできます。これにより、コンポーネント自体、そのコンポーネントのすべての子とファセットが、保存されたツリー構造情報から省略される必要があります。
context
- 現在のリクエストの FacesContext
@DeprecatedSE protected ObjectSE getComponentStateToSave(FacesContext context)
null
を返します。 このビューのコンポーネントツリー全体(子とファセットを含む)について、すべてのコンポーネントプロパティ、属性、アタッチされたオブジェクトの状態を表す Serializable
オブジェクトを構築して返すために、saveSerializedView()
によって呼び出される必要があるコンビニエンスメソッド。
コンポーネントは、transient
プロパティを true
に設定することにより、コンポーネントの状態に含まれないようにオプトアウトできます。これにより、コンポーネント自体、そのコンポーネントのすべての子とファセットが、保存されたコンポーネントの状態情報から省略される必要があります。
context
- 現在のリクエストの FacesContext
public void writeState(FacesContext context, ObjectSE state) throws IOExceptionSE
実装に依存する方法で、指定された状態 Object
インスタンスで表される状態を保存します。
このメソッドは通常、このビューのレンダリングに使用されている RenderKit
によって提供される ResponseStateManager
インスタンスの writeState()
メソッドに実際の書き込みを委譲するだけです。このメソッドは、呼び出し元が ResponseWriter
を、保存された状態が書き込まれる正しい位置に配置したことを前提としています。
既存の StateManager
実装との下位互換性のために、このメソッドのデフォルトの実装は、引数が 2 以上の長さの Object[]
のインスタンスであるかどうかをチェックします。その場合、要素 0 からのツリー構造と要素 1 からのコンポーネント状態を使用して SerializedView
インスタンスを作成し、writeState(jakarta.faces.context.FacesContext,jakarta.faces.application.StateManager.SerializedView)
を呼び出します。そうでない場合は、何もしません。
context
- 現在のリクエストの FacesContext
state
- saveSerializedView(jakarta.faces.context.FacesContext)
によって返される、書き込まれる直列化可能な状態 IOExceptionSE
- I/O エラーが発生したとき。@DeprecatedSE public void writeState(FacesContext context, StateManager.SerializedView state) throws IOExceptionSE
writeState(jakarta.faces.context.FacesContext,java.lang.Object)
に置き換えられました。デフォルトの実装では、2 番目の引数として Object[]
を渡すメソッドの非推奨でないバリアントを呼び出します。配列の最初の要素は getStructure()
からの戻り値で、2 番目の要素は引数 state
に対する getState()
からの戻り値です。 指定された SerializedView
インスタンスで表される状態を、実装に依存する方法で保存します。
このメソッドは、シンボリック定数 StateManager.STATE_SAVING_METHOD_PARAM_NAME
で指定されたコンテキスト初期化パラメーターを調べて、状態をクライアントとサーバーのどちらに保存するかを決定する必要があります。存在しない場合、クライアント側の状態の保存が想定されます。
init パラメーターがクライアント側の状態保存を使用する必要があることを示している場合、このメソッドは、このビューのレンダリングに使用されている RenderKit
によって提供される ResponseStateManager
インスタンスの writeState()
メソッドに実際の書き込みを委譲する必要があります。このメソッドは、呼び出し元が ResponseWriter
を、保存された状態が書き込まれる正しい位置に配置したことを前提としています。
context
- 現在のリクエストの FacesContext
state
- 書き込まれる直列化された状態 IOExceptionSE
- I/O エラーが発生したとき。@DeprecatedSE public abstract UIViewRoot restoreView(FacesContext context, StringSE viewId, StringSE renderKitId)
このメソッドの機能は、StateManagementStrategy.restoreView(jakarta.faces.context.FacesContext, java.lang.String, java.lang.String)
によって処理されるようになりました。実装に依存する方法で、指定された viewId
のビューのツリー構造とコンポーネントの状態を復元し、復元された UIViewRoot
を返します。この viewId
に使用できる保存済み状態情報がない場合は、代わりに null
を返します。
このメソッドは、シンボリック定数 StateManager.STATE_SAVING_METHOD_PARAM_NAME
で指定されたコンテキスト初期化パラメーターを調べて、状態をクライアントとサーバーのどちらに保存するかを決定する必要があります。存在しない場合、クライアント側の状態の保存が想定されます。
init パラメーターがクライアント側の状態保存を使用する必要があることを示している場合、このメソッドは getTreeStructureToRestore()
を呼び出す必要があり、(前のメソッド呼び出しが null 以外の値を返した場合)このビューを担当する RenderKit
によって提供される ResponseStateManager
インスタンスの getComponentStateToRestore()
メソッドを呼び出す必要があります。
context
- 現在のリクエストの FacesContext
viewId
- 復元するビューのビュー識別子 renderKitId
- このレスポンスをレンダリングするために使用される renderKitId。null
であってはなりません。null
。IllegalArgumentExceptionSE
- renderKitId
が null
の場合。@DeprecatedSE protected UIViewRoot restoreTreeStructure(FacesContext context, StringSE viewId, StringSE renderKitId)
null
を返します。 復元されるコンポーネントツリーのツリー構造を表す UIViewRoot
インスタンス(子とファセットが入力されている)を構築して返すための便利なメソッド。restoreView()
によって呼び出される必要があります。保存された状態情報が利用できない場合は、代わりに null
を返します。
context
- 現在のリクエストの FacesContext
viewId
- 復元するビューのビュー識別子 renderKitId
- このレスポンスをレンダリングするために使用される renderKitId。null
であってはなりません。null
。IllegalArgumentExceptionSE
- renderKitId
が null
の場合。@DeprecatedSE protected void restoreComponentState(FacesContext context, UIViewRoot viewRoot, StringSE renderKitId)
復元されたコンポーネントツリー内のすべてのコンポーネントの属性、プロパティ、アタッチされたオブジェクトを復元するために、restoreView()
によって呼び出される必要がある便利なメソッド。
context
- 現在のリクエストの FacesContext
viewRoot
- restoreTreeStructure()
への以前の呼び出しによって返された UIViewRoot
renderKitId
- このレスポンスをレンダリングするために使用される renderKitId。null
であってはなりません。IllegalArgumentExceptionSE
- renderKitId
が null
の場合。public boolean isSavingStateInClient(FacesContext context)
状態がクライアントに保存されているかどうかを判断するメソッド。
context
- Faces コンテキスト。true
は、定数 STATE_SAVING_METHOD_PARAM_NAME
の値によって指定された ServletContext
init パラメーターの値が定数 STATE_SAVING_METHOD_CLIENT
の値と等しい(大文字と小文字を区別しない)場合に限ります。それ以外の場合は false
。NullPointerExceptionSE
- context
が null
の場合。public StringSE getViewState(FacesContext context)
ビューステートを RenderKit
固有のマークアップなしで String
として返す便利なメソッド。このメソッドのこのデフォルトの実装は、saveView(jakarta.faces.context.FacesContext)
を呼び出し、結果を ResponseStateManager.getViewState(jakarta.faces.context.FacesContext, Object)
に渡し、結果の値を ResponseStateManager.getViewState(jakarta.faces.context.FacesContext, Object)
から返します。
context
- 現在のリクエストの FacesContext
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.