クラス ResponseStateManager
- java.lang.ObjectSE
-
- jakarta.faces.render.ResponseStateManager
public abstract class ResponseStateManager extends ObjectSE
ResponseStateManager は、レスポンスの生成に使用されている特定のレンダリングテクノロジを認識している
StateManagerのヘルパークラスです。これは、RenderKitによって販売されているシングルトン抽象クラスです。このクラスは、非表示フィールド、セッション、その 2 つの組み合わせのいずれであっても、状態を保存するメカニズムを認識しています。
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static StringSECLIENT_WINDOW_PARAMエンコードされた ClientWindow を参照する非表示フィールドの名前。static StringSECLIENT_WINDOW_URL_PARAMクライアントウィンドウ ID を送信するための URL クエリパラメーターの名前。static StringSENON_POSTBACK_VIEW_TOKEN_PARAMこの定数の値は、このアプリケーションの保護されたビューの現在構成されているSetに関して、受信非ポストバックリクエストの安全性を検証するために値がインスペクションされるリクエストパラメーターの名前と見なされます。static StringSERENDER_KIT_ID_PARAMRenderKit ID を導出するためにViewHandler.calculateRenderKitId(jakarta.faces.context.FacesContext)のデフォルト実装で使用されるリクエストパラメーターの名前。static StringSEVIEW_STATE_PARAM実装では、この定数フィールド値を、リクエスト間の状態を保存するクライアントパラメーターの名前として使用する必要があります。
コンストラクターの概要
コンストラクター コンストラクター 説明 ResponseStateManager()
方法の概要
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 StringSEgetCryptographicallyStrongTokenFromSession(FacesContext context)準拠する実装は、このアプリケーションのビューを保護するために使用するために、暗号的に強力なトークンを返す必要があります。ObjectSEgetState(FacesContext context, StringSE viewId)実装は、現在のリクエストをインスペクションし、ツリー構造とwriteState(jakarta.faces.context.FacesContext,java.lang.Object)の前の呼び出しに渡されたコンポーネントの状態を表すオブジェクトを返す必要があります。StringSEgetViewState(FacesContext context, ObjectSE state)この ResponseStateManager でサポートされているレンダリングテクノロジに関連するマークアップなしで、指定された状態をStringとして返します。booleanisPostback(FacesContext context)現在のリクエストがポストバックの場合は true を返します。booleanisStateless(FacesContext context, StringSE viewId)writeState(jakarta.faces.context.FacesContext, java.lang.Object)への前の呼び出しがステートレスだった場合は、trueを返します。voidwriteState(FacesContext context, ObjectSE state)
フィールドの詳細
RENDER_KIT_ID_PARAM
public static final StringSE RENDER_KIT_ID_PARAM
RenderKit ID を導出するために
ViewHandler.calculateRenderKitId(jakarta.faces.context.FacesContext)のデフォルト実装で使用されるリクエストパラメーターの名前。- 関連事項:
- 定数フィールド値
VIEW_STATE_PARAM
public static final StringSE VIEW_STATE_PARAM
実装では、この定数フィールド値を、リクエスト間の状態を保存するクライアントパラメーターの名前として使用する必要があります。
id属性は、UIComponent.getContainerClientId(jakarta.faces.context.FacesContext)からの戻り値、UINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)からの戻り値、この定数フィールド値、区切り文字、この種のクライアントパラメーターの他のすべてのインスタンスに関して一意であることが保証されている数値を連結したものでなければなりません。ビュー。少なくともこのパラメーターの値を予測することを困難にすることにより、実装がクロスサイトスクリプティング攻撃から保護することを強くお勧めします。
- 導入:
- 1.2
- 関連事項:
- 定数フィールド値
CLIENT_WINDOW_PARAM
public static final StringSE CLIENT_WINDOW_PARAM
エンコードされた ClientWindow を参照する非表示フィールドの名前。このフィールドは、
ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAMEが "none" でない場合にのみ使用されます。id属性は、UIComponent.getContainerClientId(jakarta.faces.context.FacesContext)からの戻り値、UINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)からの戻り値、この定数フィールド値、区切り文字、この種のクライアントパラメーターの他のすべてのインスタンスに関して一意であることが保証されている数値を連結したものでなければなりません。景色。このパラメーターの値は、ClientWindow.getId()からの戻り値です。- 導入:
- 2.2
- 関連事項:
- 定数フィールド値
CLIENT_WINDOW_URL_PARAM
public static final StringSE CLIENT_WINDOW_URL_PARAM
クライアントウィンドウ ID を送信するための URL クエリパラメーターの名前。このパラメーターは、
ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAMEが "none" でない場合にのみ使用されます。パラメーターの名前は、このフィールドの定数値によって指定されます。このパラメーターの値は、ClientWindow.getId()からの戻り値です。- 導入:
- 2.2
- 関連事項:
- 定数フィールド値
メソッドの詳細
writeState
public void writeState(FacesContext context, ObjectSE state) throws IOExceptionSE
引数
stateを取り、現在のResponseWriterを使用して出力に書き込みます。これは、すでに正しく配置されている必要があります。FacesContext.getViewRoot()を呼び出します。StateHolder.isTransient()がtrueを返す場合は、実装固有のアクションを実行して、次のisStateless(jakarta.faces.context.FacesContext, java.lang.String)の呼び出しがtrueを返し、戻るようにします。それ以外の場合は、次のように進めます。状態を非表示フィールドに書き出す場合、実装は、文字列を HTTP リクエストパラメーターとして含めるのに適したものにするために、必要なすべての文字置換を行うように注意する必要があります。
このアプリケーションの状態保存方法が
StateManager.STATE_SAVING_METHOD_CLIENTの場合、実装は、改ざんされないようにクライアントに 保存される状態を暗号化する必要があります。このアプリケーションの状態保存方法が
StateManager.STATE_SAVING_METHOD_SERVERであり、現在のリクエストがAjaxリクエストである場合(PartialViewContext.isAjaxRequest()はtrueを返します)、使用可能な場合は現在のビュー状態識別子を使用します(新しい識別子を生成しないでください)。この
ResponseStateManager実装に関連付けられているレンダーキット識別子を、String定数ResponseStateManager.RENDER_KIT_ID_PARAMの値として名前を付けて書き出します。次の場合は、レンダーキット識別子を記述しないでください。- これは、
Application.getDefaultRenderKitId()またはによって返されるデフォルトのレンダーキット識別子です。 - レンダーキット識別子は
jakarta.faces.render.RenderKitFactory.HTML_BASIC_RENDER_KITの値であり、Application.getDefaultRenderKitId()はnullを返します。
ClientWindowは、これらの手順を使用して作成する必要があります。ExternalContext.getClientWindow()を呼び出します。結果がnullの場合、ClientWindowに関してそれ以上のアクションを実行しないでください。結果が非 nullの場合は、名前がCLIENT_WINDOW_PARAM、ID が<VIEW_ROOT_CONTAINER_CLIENT_ID><SEP>jakarta.faces.ClientWindow<SEP><UNIQUE_PER_VIEW_NUMBER>の非表示フィールドを書き込みます。ここで、<SEP> は現在構成されているUINamingContainer.getSeparatorChar()です。<VIEW_ROOT_CONTAINER_CLIENT_ID> は、この状態が発生したビューのUIViewRoot.getContainerClientId()からの戻り値です。<UNIQUE_PER_VIEW_NUMBER> は、このビュー内で一意である必要がある番号ですが、ビューステートに含めることはできません。フィールドの値は実装に依存しますが、ユーザーのセッション内でこのウィンドウを一意に識別する必要があります。- パラメーター:
context- 現在のリクエストのFacesContextインスタンスstate- 以前に保存された直列化された状態情報- 例外:
IOExceptionSE- state 引数が長さ 2 の配列でない場合。- 導入:
- 1.2
- これは、
isStateless
public boolean isStateless(FacesContext context, StringSE viewId)
writeState(jakarta.faces.context.FacesContext, java.lang.Object)への前の呼び出しがステートレスだった場合は、trueを返します。writeState()への前の呼び出しがステートフルであった場合は、falseを返します。それ以外の場合はIllegalStateExceptionをスローします。このクラスの以前のバージョンから拡張された可能性のあるカスタム実装との下位互換性を維持するために、
falseを返す実装が提供されています。準拠した実装は、指定されたアクションを実行するためにこのメソッドをオーバーライドする必要があります。- パラメーター:
context- 現在のリクエストのFacesContextインスタンスviewId- 復元するビューのビュー識別子- 戻り値:
- これの無国籍の価値はライフサイクルを通して実行されます。
- 例外:
NullPointerExceptionSE- 引数contextがnullの場合。IllegalStateExceptionSE- このメソッドが呼び出され、writeState(jakarta.faces.context.FacesContext, java.lang.Object)への前の呼び出しのステートフル性を判別できない場合。- 導入:
- 2.2
getState
public ObjectSE getState(FacesContext context, StringSE viewId)
実装は、現在のリクエストをインスペクションし、ツリー構造と
writeState(jakarta.faces.context.FacesContext,java.lang.Object)の前の呼び出しに渡されたコンポーネントの状態を表すオブジェクトを返す必要があります。このアプリケーションの状態保存方法が
StateManager.STATE_SAVING_METHOD_CLIENTの場合、writeState()は改ざんされないように状態を暗号化します。状態が復号化に失敗するか、復号化するが改ざんの証拠を示している場合は、ProtectedViewExceptionをスローする必要があります。- パラメーター:
context- 現在のリクエストのFacesContextインスタンスviewId- 復元するビューのビュー識別子- 戻り値:
writeStateに渡されたツリー構造とコンポーネントの状態オブジェクト。これが最初のリクエストである場合、このメソッドはnullを返します。- 導入:
- 1.2
isPostback
public boolean isPostback(FacesContext context)
現在のリクエストがポストバックの場合は true を返します。このメソッドは、 ビューの復元フェーズから利用され、
ViewHandler.restoreView(jakarta.faces.context.FacesContext, java.lang.String)またはViewHandler.createView(jakarta.faces.context.FacesContext, java.lang.String)のどちらを呼び出す必要があるかを決定します。デフォルトの実装では、このResponseStateManagerインスタンスが、このリクエストがポストバックである前のリクエストで状態を書き出した場合はtrueを返す必要があり、それ以外の場合はfalseを返す必要があります。標準 HTML RenderKit のこのメソッドの実装は、
ExternalContextのrequestParameterMapを参照し、シンボリック定数VIEW_STATE_PARAMの値に等しいキーがある場合にのみtrueを返す必要があります。Jakarta Faces 1.2 より前の
ResponseStateManagerの実装との下位互換性のために、ExternalContextのrequestParameterMapを参照し、サイズが 0 より大きい場合はtrueを返すデフォルトの実装が提供されています。- パラメーター:
context- 現在のリクエストのFacesContext。- 戻り値:
- 上記で指定された値
- 導入:
- 1.2
getViewState
public StringSE getViewState(FacesContext context, ObjectSE state)
この ResponseStateManager でサポートされているレンダリングテクノロジに関連するマークアップなしで、指定された状態を
Stringとして返します。- パラメーター:
context- 現在のリクエストのFacesContextstate- 文字列バージョンが生成される状態- 戻り値:
- マークアップの詳細がないこのリクエストのビューステート
- 導入:
- 2.0
getCryptographicallyStrongTokenFromSession
public StringSE getCryptographicallyStrongTokenFromSession(FacesContext context)
準拠した実装は、このアプリケーションのビューを保護するために使用する暗号的に強力なトークンを返す必要があります。以前のリビジョンとの下位互換性のために、単純に
nullを返すデフォルトの実装が提供されています。- パラメーター:
context- 現在のリクエストのFacesContext- 戻り値:
- 暗号的に強い価値
- 導入:
- 2.2