パッケージ jakarta.faces.view

クラス ViewDeclarationLanguage

java.lang.ObjectSE
jakarta.faces.view.ViewDeclarationLanguage
既知の直属サブクラス
ViewDeclarationLanguageWrapper

public abstract class ViewDeclarationLanguage extends ObjectSE

ビュー宣言言語は Jakarta Faces ランタイムと対話するために実装しなければならないことを契約。このクラスの実装はスレッドセーフでなければなりません。

このクラスのインスタンスはアプリケーションスコープであり、ViewDeclarationLanguageFactory から取得する必要があります。

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

    • FACELETS_VIEW_DECLARATION_LANGUAGE_ID

      public static final StringSE FACELETS_VIEW_DECLARATION_LANGUAGE_ID

      Facelets ビュー宣言言語の識別子。

      導入:
      2.1
      関連事項:
  • コンストラクターの詳細

    • ViewDeclarationLanguage

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

    • restoreView

      public abstract UIViewRoot restoreView(FacesContext context, StringSE viewId)

      以前に作成したビューから UIViewRoot を復元します。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。

      パラメーター:
      context - このリクエストの FacesContext 
      viewId - 以前にレンダリングされたビューの識別子。
      戻り値:
      復元されたビュー
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合
    • getViewMetadata

      public abstract ViewMetadata getViewMetadata(FacesContext context, StringSE viewId)

      引数 viewId で表されるビューのビューメタデータへの参照を返すか、メタデータが見つからない場合は null を返します。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。Facelets の実装は非 null を返す必要があります。

      パラメーター:
      context - このリクエストの FacesContext
      viewId - メタデータを抽出するビュー ID
      戻り値:
      ビューのメタデータ
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合。
      FacesException - メタデータの取得にエラーがある場合
      導入:
      2.0
    • createView

      public abstract UIViewRoot createView(FacesContext context, StringSE viewId)

      引数 viewId によって参照されるアーティファクトに含まれる VDL から UIViewRoot を作成しますデフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。

      パラメーター:
      context - このリクエストの FacesContext 
      viewId - このビューを説明する VDL 構文を含むアーティファクトの識別子。
      戻り値:
      新しく作成されたビュールート
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合
      導入:
      2.0
    • buildView

      public abstract void buildView(FacesContext context, UIViewRoot root) throws IOExceptionSE

      子供たちと一緒に移入する、createView(jakarta.faces.context.FacesContext, java.lang.String) への呼び出しを介して作成されている必要があり、引数 UIViewRoot を引き起こすために、この VDL 実装に任意のアクションを特定してください。

      Facelets の実装では、ビューを構成するマークアップを実行する必要があります。ビュー内の UIComponent インスタンスは、UIComponent で定義された他のライフサイクルメソッドと同じ深さ優先で検出され、その間にビューに追加されます(ただしレンダリングされません)。トラバーサル。ランタイムは、次のいずれかが発生する前に、ビューが完全に入力されている必要があることを保証する必要があります。

      root にすでに子が設定されている場合でも、ビューを再構築する必要がありますが、既存のコンポーネントが VDL ページの対応する VDL と正しくペアリングされるように注意する必要があります。また、ビューからのコンポーネントの追加または削除中に通常生成されるシステムイベントは、ビューの作成中に一時的に無効にし、ビューの作成時に再度有効にする必要があります。

      パラメーター:
      context - このリクエストの FacesContext 
      root - この VDL 実装に固有の手法を使用して、子を実装する UIViewRoot
      例外:
      IOExceptionSE - 何らかの理由でビューを構築できない場合
    • renderView

      public abstract void renderView(FacesContext context, UIViewRoot view) throws IOExceptionSE

      引数 view をルートとするビューをレンダリングします。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。

      パラメーター:
      context - このリクエストの FacesContext 
      view - createView(jakarta.faces.context.FacesContext, java.lang.String) または restoreView(jakarta.faces.context.FacesContext, java.lang.String) への早期呼び出しからの UIViewRoot
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合
      IOExceptionSE - 何らかの理由でビューをレンダリングできない場合
    • getComponentMetadata

      public abstract BeanInfoSE getComponentMetadata(FacesContext context, Resource componentResource)

      引数 componentResource で表される複合コンポーネントのコンポーネントメタデータへの参照を返すか、メタデータが見つからない場合は null を返します。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。Jakarta Server Pages 実装は UnsupportedOperationException をスローする必要があります。

      パラメーター:
      context - このリクエストの FacesContext
      componentResource - コンポーネントを表す Resource
      戻り値:
      コンポーネントのメタデータ
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合。
      FacesException - メタデータの取得にエラーがある場合
      UnsupportedOperationExceptionSE - これが Jakarta Server Pages VDL 実装の場合。
      導入:
      2.0
    • getScriptComponentResource

      public abstract Resource getScriptComponentResource(FacesContext context, Resource componentResource)

      引数 componentResource を指定して、実装固有のアクションを実行して Resource を検出します。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。Jakarta Server Pages 実装は UnsupportedOperationException をスローする必要があります。

      パラメーター:
      context - このリクエストの FacesContext
      componentResource - コンポーネントを表す Resource
      戻り値:
      引数  componentResource に対応する Resource
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合。
      FacesException - スクリプトコンポーネントリソースの取得でエラーが発生した場合
      UnsupportedOperationExceptionSE - これが Jakarta Server Pages VDL 実装の場合。
      導入:
      2.0
    • createComponent

      public UIComponent createComponent(FacesContext context, StringSE taglibURI, StringSE tagName, MapSE<StringSE,ObjectSE> attributes)

      ViewDeclarationLanguage 固有のタグライブラリ URI とタグ名を指定してコンポーネントを作成します。ランタイムは、FaceletsVDL で動作するこのメソッドをサポートする必要があります。他の種類の ViewDeclarationLanguage がサポートされている場合がありますが、サポートする必要はありません。このメソッドをオーバーライドしない装飾された ViewDeclrationLanguage 実装との下位互換性のために、null を返すデフォルトの実装が提供されています。ただし、このメソッドが導入された仕様のバージョンに準拠する実装では、このメソッドを実装する必要があります。

      パラメーター:
      context - このリクエストの FacesContext
      taglibURI - コンポーネントを含む完全修飾タグライブラリ URI
      tagName - コンポーネントを公開するライブラリ内のタグの名前
      attributes - 属性を指定する必要がない場合、このコンポーネントまたは null の作成を引き起こすマークアップで指定されたであろう名前 = 値のペア。
      戻り値:
      新しく作成されたコンポーネント
      例外:
      NullPointerExceptionSE - contexttaglibURItagName が null の場合
      導入:
      2.2
    • retargetAttachedObjects

      public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, ListSE<AttachedObjectHandler> handlers)

      引数 topLevelComponent のコンポーネントメタデータが getComponentMetadata(jakarta.faces.context.FacesContext, jakarta.faces.application.Resource) の以前の呼び出しによって使用可能になっていると仮定すると、コンポーネントメタデータを活用して、アタッチされたオブジェクトを最上位の複合コンポーネントから複合コンポーネント内の個々の AttachedObjectTarget インスタンスに再ターゲットします。このメソッドは、複合コンポーネントの使用が検出されたときに UIComponent ツリーを作成するときに、ViewDeclarationLanguage 実装によって呼び出される必要があります。

      以下と意味的に同等のアルゴリズムを実装する必要があります。

      実装は、アタッチされたオブジェクトをトップレベルのコンプサイトコンポーネントからコンポジットおよび非コンポジットコンポーネントであるターゲットに再ターゲットすることをサポートする必要があります。

      UnsupportedOperationException をスローする実装が提供されます。バージョン 2.0 に準拠し、仕様を超える Faces 実装は、このメソッドをオーバーライドする必要があります。

      パラメーター:
      context - このリクエストの FacesContext。
      topLevelComponent - アタッチされたオブジェクトをアタッチする必要があるビューの UIComponent。この UIComponent には、そのコンポーネントメタデータがすでに関連付けられており、JavaBeans API を介して利用できる必要があります。
      handlers - アタッチされたオブジェクトのタグハンドラー
      例外:
      NullPointerExceptionSE - 引数のいずれかが null の場合。
      導入:
      2.0
    • retargetMethodExpressions

      public void retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent)

      引数 topLevelComponent のコンポーネントメタデータが getComponentMetadata(jakarta.faces.context.FacesContext, jakarta.faces.application.Resource) の以前の呼び出しによって使用可能になっていると仮定すると、最上位コンポーネントから適切な内部コンポーネントにメソッド式を再ターゲットする目的でコンポーネントメタデータを活用します。MethodExpression である属性ごとに( "method-signature" 属性が存在し、"type" 属性が存在しないことで示されます)、次のアクションを実行する必要があります。

      • ターゲット属性の値を取得します。値が ValueExpression の場合は、それを評価します。ターゲット属性がない場合は、メタデータ要素の名前をターゲット属性の評価値とします

      • ターゲットをスペース(タブではなく)で区切られた ID のリストとして解釈します。リストの各エントリについて:

        • 現在のリストエントリと同じ ID を持つ topLevelComponent の内部コンポーネントを検索します。説明上、このコンポーネントは target と呼ばれます。見つからない場合は、ログにエラーを出力し、次の属性に進みます。

        • 説明のために、属性の宣言された名前は name と呼ばれます

        • topLevelComponent の属性マップで、キーのエントリを検索します。結果が ValueExpression であると仮定します。説明のために、これは attributeValueExpression です。見つからない場合は、エラーをログに記録し、次の属性に進みます。

        • name が文字列 "action" または引用符なしの "actionListener" と等しい場合、ターゲットActionSource であると想定します。

        • name が文字列 "validator" または引用符なしの "valueChangeListener" と等しい場合、ターゲットEditableValueHolder であると想定します。

        • attributeValueExpression で getExpressionString() を呼び出し、その文字列を使用して name の適切な署名の MethodExpression を作成します。

        • name が前述の文字列のいずれとも等しくない場合は、attributeValueExpression で getExpressionString() を呼び出し、その文字列を使用して <composite:attribute /> タグの "method-signature" 属性の値に基づいて署名が作成される MethodExpression を作成します。

        • 結果として得られる MethodExpression を議論のために attributeMethodExpression と呼ぶことにします。

        • name が引用符なしの文字列 "action" と等しい場合は、target に対して ActionSource.setActionExpression(jakarta.el.MethodExpression) を呼び出し、attributeMethodExpression を渡します。

        • name が引用符なしの文字列 "actionListener" と等しい場合は、targetActionSource.addActionListener(jakarta.faces.event.ActionListener) を呼び出し、MethodExpressionActionListener でラップされた attributeMethodExpression を渡します。

        • name が引用符なしの文字列 "validator" と等しい場合は、target に対して EditableValueHolder.addValidator(jakarta.faces.validator.Validator) を呼び出し、MethodExpressionValidator でラップされた attributeMethodExpression を渡します。

        • name が引用符なしの文字列 "valueChangeListener" と等しい場合は、targetEditableValueHolder.addValueChangeListener(jakarta.faces.event.ValueChangeListener) を呼び出し、MethodExpressionValueChangeListener でラップされた attributeMethodExpression を渡します。

        • それ以外の場合は、MethodExpression をコンポーネント属性セットに配置する必要があると想定します。runtme は、"method-signature" 属性の値に基づいて MethodExpression インスタンスを作成する必要があります。

      UnsupportedOperationException をスローする実装が提供されます。バージョン 2.0 に準拠し、仕様を超える Faces 実装は、このメソッドをオーバーライドする必要があります。

      パラメーター:
      context - このリクエストの FacesContext。
      topLevelComponent - アタッチされたオブジェクトをアタッチする必要があるビューの UIComponent。この UIComponent には、そのコンポーネントメタデータがすでに関連付けられており、JavaBeans API を介して利用できる必要があります。
      例外:
      NullPointerExceptionSE - context または topLevelComponent が null の場合。
      導入:
      2.0
    • calculateResourceLibraryContracts

      public ListSE<StringSE> calculateResourceLibraryContracts(FacesContext context, StringSE viewId)

      引数 viewId で指定されたビューで使用できるようになるリソースライブラリ契約のリストを返します。一致するものが見つからない場合は、空のリストを返します。デフォルト実装の仕様については、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」を参照してください。以前の実装との下位互換性のために、null を返す実装が提供されていますが、このメソッドが導入された仕様のバージョンに準拠する実装は、Jakarta Faces Specification Document のセクション 7.7.2「デフォルト ViewDeclarationLanguage 実装」で指定されているとおりに実装する必要があります。

      パラメーター:
      context - このリクエストの FacesContext 
      viewId - 該当するリソースライブラリ契約を計算する必要があるビュー ID。
      戻り値:
      リソースライブラリ契約名の計算されたリスト
      導入:
      2.2
    • getStateManagementStrategy

      public abstract StateManagementStrategy getStateManagementStrategy(FacesContext context, StringSE viewId)

      状態の保存と復元の実装を制御したい実装の場合、StateManagementStrategy ではそれが可能です。null を返すことは、実装がランタイムに状態の保存と復元を処理することを望んでいることを示します。Jakarta Faces 2.0 以降の Facelets に VDL を提供する実装は、このメソッドから非 null を返す必要があります。

      パラメーター:
      context - 現在のリクエストの FacesContext
      viewId - ビュー ID。
      戻り値:
      上記で指定された戦略
      導入:
      2.0
    • viewExists

      public boolean viewExists(FacesContext context, StringSE viewId)

      指定された viewId に対応する物理リソースが存在するかどうかをテストします

      デフォルトの実装では、ResourceHandler.createViewResource(jakarta.faces.context.FacesContext, java.lang.String) を使用して物理リソースを検索します。

      パラメーター:
      context - このリクエストの FacesContext
      viewId - テストするビュー ID
      戻り値:
      上記の結果
      導入:
      2.1
    • getViews

      public StreamSE<StringSE> getViews(FacesContext facesContext, StringSE path, ViewVisitOption... options)

      指定された初期パスをルートとするビューツリーを進めることにより、おそらく怠惰に設定された Stream を返します。ビューツリーは幅優先でトラバースれ、ストリーム内の要素は論理ビュー ID です。

      このメソッドは、それを呼び出すことは式を評価することと同等であるかのように機能します。

       getViewResources(facesContext, start, Integer.MAX_VALUE, options)
       
      言い換えると、リソースツリーのすべてのレベルにアクセスします。
      パラメーター:
      facesContext - このリクエストの FacesContext
      path - ビューの検索を開始する最初のパス
      options - トラバーサルに影響を与えるオプション。これらの詳細については、ViewVisitOption を参照してください。
      戻り値:
      ビュー ID の StreamSE
      導入:
      2.3
    • getViews

      public StreamSE<StringSE> getViews(FacesContext facesContext, StringSE path, int maxDepth, ViewVisitOption... options)

      指定された初期パスをルートとするビューツリーを進めることにより、おそらく怠惰に設定された Stream を返します。ビューツリーは幅優先でトラバースれ、ストリーム内の要素は論理ビュー ID です。

      maxDepth パラメーターは、常にアクセスされる初期パスを超えてアクセスするディレクトリレベルの最大深度です。値は、指定された初期パスではなく、ルート(/)を基準にしています。たとえば、maxDepth = 3 および初期パス /foo/ が与えられた場合、訪問は /foo/bar/ まで進みます。ここで、/ は深さ 1 としてカウントされ、/foo/ は深さ 2 としてカウントされ、/foo/bar/ は深さ 3 としてカウントされます。初期パスの深さ以下の値は、初期パスのみが訪問されることを意味します。MAX_VALUESE の値を使用して、すべてのレベルにアクセスする必要があることを示すことができます。

      パラメーター:
      facesContext - このリクエストの FacesContext
      path - ビューの検索を開始する最初のパス
      maxDepth - ルート(/)から数えた、アクセスするネストされたディレクトリの絶対最大深度。
      options - トラバーサルに影響を与えるオプション。これらの詳細については、ViewVisitOption を参照してください。
      戻り値:
      ビュー ID の StreamSE
      導入:
      2.3
    • getId

      public StringSE getId()

      このビュー宣言言語を識別するために使用できる null 以外の文字列を返します。

      デフォルトの実装は、ビュー宣言言語実装の完全修飾クラス名を返します。サブクラスは、より意味のある ID を提供するためにオーバーライドできます。

      戻り値:
      このビュー宣言言語の ID
      導入:
      2.1