パッケージ jakarta.faces.lifecycle

クラス ClientWindow

  • 既知の直属サブクラス
    ClientWindowWrapper

    public abstract class ClientWindow
    extends ObjectSE

    このクラスは、クライアントウィンドウを表します。これは、ブラウザータブ、ブラウザーウィンドウ、ブラウザーポップアップ、ポートレット、UIViewRoot をルートとする UIComponent 階層を表示できるその他のものです。

    動作モード

    なしモード

    ClientWindow の生成は、CLIENT_WINDOW_MODE_PARAM_NAME の値で指定された context-param の値によって制御されます。この context-param が指定されていない場合、またはその値が "none" の場合、ClientWindow インスタンスは生成されず、アプリケーション全体で機能全体が事実上無効になります。

    その他のモード

    この機能をサポートするために可能な限り幅広い実装の選択肢に対応するために、"none" および "url" 以外のモードの明示的な名前は指定されていません。ただし、CLIENT_WINDOW_MODE_PARAM_NAME のすべての値について、ClientWindow の存続期間は、特定のクライアントウィンドウ(またはタブ、ポップアップなど)から Jakarta Faces ランタイムに対して行われた最初のリクエストから始まり、そのウィンドウが開いたままであるか、セッションは、どちらか早い方で期限切れになります。クライアントウィンドウは、常に一度に 1 つの UIViewRoot インスタンスに関連付けられますが、その存続期間中に多くの異なる UIViewRoot を表示する場合があります。

    ClientWindow インスタンスは、Lifecycle.attachWindow(jakarta.faces.context.FacesContext) メソッド中に受信リクエストに関連付けられます。このメソッドにより、ClientWindow の新しいインスタンスが作成され、ID が割り当てられ、ExternalContext.setClientWindow(jakarta.faces.lifecycle.ClientWindow) に渡されます。

    状態の保存中、ウィンドウ ID モードまたは状態保存モードに関係なく、ajax および non-ajax リクエストの場合、名前、ID、値が ResponseStateManager.CLIENT_WINDOW_PARAM で指定されている非表示フィールドを書き込む必要があります。

    すでに説明した隠しフィールドに加えて。ランタイムは、クリックされたときにユーザーエージェントが Faces サーバーに GET リクエストを送信するようにするハイパーリンクをレンダリングするすべてのコンポーネントに、ResponseStateManager.CLIENT_WINDOW_URL_PARAM で指定された名前と値のクエリパラメーターがあることを確認する必要があります。この要件は、ExternalContext のいくつかの「エンコード」メソッドによって満たされます。詳細については、ExternalContext.encodeActionURL(java.lang.String) を参照してください。

    導入:
    2.2
    • フィールドの詳細

      • CLIENT_WINDOW_MODE_PARAM_NAME

        public static final StringSE CLIENT_WINDOW_MODE_PARAM_NAME

        ClientWindow 機能の動作を制御する context-param。ランタイムは、引用符なしで値 "none" および "url" をサポートする必要がありますが、他の値も可能です。指定されていない場合、または値が実装によって理解されていない場合は、"none" が想定されます。

        導入:
        2.2
        関連事項:
        定数フィールド値
      • NUMBER_OF_CLIENT_WINDOWS_PARAM_NAME

        public static final StringSE NUMBER_OF_CLIENT_WINDOWS_PARAM_NAME

        ClientWindowScoped で使用される ClientWindows の最大数を示します。jakarta.faces.CLIENT_WINDOW_MODE が有効になっている場合にのみアクティブになります。

        導入:
        4.0
        関連事項:
        定数フィールド値
    • コンストラクターの詳細

      • ClientWindow

        public ClientWindow()
    • メソッドの詳細

      • getQueryURLParameters

        public abstract MapSE<StringSE,​StringSE> getQueryURLParameters​(FacesContext context)

        このメソッドは、クライアントウィンドウ関連のパラメーターを URL に挿入する必要があるランタイムによって URL が生成されるたびに呼び出されます。これにより、カスタム ClientWindow 実装が、ハイパーリンクのレンダリングなど、URL が生成される場合にクライアントウィンドウ固有の追加情報を挿入する機会が与えられることが保証されます。返されるマップは不変である必要があります。このメソッドのデフォルト実装は空のマップを返します。

        パラメーター:
        context - このリクエストの FacesContext 
        戻り値:
        null または URL クエリ文字列に挿入するパラメーターのマップ。
        導入:
        2.2
      • getId

        public abstract StringSE getId()

        現在のセッションのスコープ内でこの ClientWindow を一意に識別する文字列値を返します。この値の導出方法の仕様については、decode(jakarta.faces.context.FacesContext) を参照してください。

        戻り値:
        ClientWindow の ID
        導入:
        2.2
      • decode

        public abstract void decode​(FacesContext context)

        実装は、受信リクエストを調べ、getId() メソッドから返される必要のある値を抽出する責任があります。CLIENT_WINDOW_MODE_PARAM_NAME が "none" の場合、このメソッドを呼び出さないでください。CLIENT_WINDOW_MODE_PARAM_NAME が "url" の場合、実装は最初に ResponseStateManager.CLIENT_WINDOW_PARAM の値で指定された名前でリクエストパラメーターを探す必要があります。値が見つからない場合は、ResponseStateManager.CLIENT_WINDOW_URL_PARAM の値で指定された名前でリクエストパラメーターを探します。値が見つからない場合は、現在のセッションのスコープ内でこの ClientWindow を一意に識別する ID を作成します。この値は、getId() メソッドから返すために使用可能にする必要があります。値は、非表示フィールドまたはクエリパラメーターとして含めるのに適している必要があります。値が見つかった場合は、セッションのキーを使用して値を復号化し、getId() からの戻りに使用できるようにします。

        パラメーター:
        context - このリクエストの FacesContext
        導入:
        2.2
      • disableClientWindowRenderMode

        public void disableClientWindowRenderMode​(FacesContext context)

        生成された URL での ClientWindow の追加の使用ごとの無効化を許可するコンポーネントは、これらの URL をレンダリングする前に、まずこのメソッドを呼び出す必要があります。呼び出し元は、URL のレンダリング後に finally ブロックから enableClientWindowRenderMode(jakarta.faces.context.FacesContext) を呼び出す必要があります。CLIENT_WINDOW_MODE_PARAM_NAME が引用符なしの "url" の場合、GET リクエストを引き起こす生成されたすべての URL は、デフォルトで ClientWindow を追加する必要があります。コールサイトは実際の ClientWindow インスタンスにアクセスせずにアクセスする必要があるため、これは静的メソッドとして指定されています。

        パラメーター:
        context - このリクエストの FacesContext
        導入:
        2.2
      • enableClientWindowRenderMode

        public void enableClientWindowRenderMode​(FacesContext context)

        生成された URL での ClientWindow の追加の使用ごとの無効化を許可するコンポーネントは、それらの URL をレンダリングした後、最初にこのメソッドを呼び出す必要があります。CLIENT_WINDOW_MODE_PARAM_NAME が引用符なしの "url" の場合、GET リクエストを引き起こすすべての生成された URL は、デフォルトで ClientWindow を追加する必要があります。コールサイトは実際の ClientWindow インスタンスにアクセスせずにアクセスする必要があるため、これは静的メソッドとして指定されています。

        パラメーター:
        context - このリクエストの FacesContext
        導入:
        2.2
      • isClientWindowRenderModeEnabled

        public boolean isClientWindowRenderModeEnabled​(FacesContext context)

        生成された URL に ClientWindow を追加するメソッドは、このメソッドを呼び出して、許可されているかどうかを確認する必要があります。CLIENT_WINDOW_MODE_PARAM_NAME が引用符なしの "url" の場合、GET リクエストを引き起こすすべての生成された URL は、デフォルトで ClientWindow を追加する必要があります。コールサイトは実際の ClientWindow インスタンスにアクセスせずにアクセスする必要があるため、これは静的メソッドとして指定されています。

        パラメーター:
        context - このリクエストの FacesContext
        戻り値:
        上記の結果
        導入:
        2.2