クラス ViewDeclarationLanguage
- java.lang.ObjectSE
-
- jakarta.faces.view.ViewDeclarationLanguage
- 既知の直属サブクラス
ViewDeclarationLanguageWrapper
public abstract class ViewDeclarationLanguage extends ObjectSE
ビュー宣言言語は Jakarta Faces ランタイムと対話するために実装しなければならないことを契約。このクラスの実装はスレッドセーフでなければなりません。
このクラスのインスタンスはアプリケーションスコープであり、
ViewDeclarationLanguageFactory
から取得する必要があります。- 導入:
- 2.0
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static StringSE
FACELETS_VIEW_DECLARATION_LANGUAGE_ID
Facelets ビュー宣言言語の識別子。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 ViewDeclarationLanguage()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 abstract void
buildView(FacesContext context, UIViewRoot root)
子供たちと一緒に移入する、createView(jakarta.faces.context.FacesContext, java.lang.String)
への呼び出しを介して作成されている必要があり、引数UIViewRoot
を引き起こすために、この VDL 実装に任意のアクションを特定してください。ListSE<StringSE>
calculateResourceLibraryContracts(FacesContext context, StringSE viewId)
引数viewId
で指定されたビューで使用できるようになるリソースライブラリ契約のリストを返します。UIComponent
createComponent(FacesContext context, StringSE taglibURI, StringSE tagName, MapSE<StringSE,ObjectSE> attributes)
ViewDeclarationLanguage
固有のタグライブラリ URI とタグ名を指定してコンポーネントを作成します。abstract UIViewRoot
createView(FacesContext context, StringSE viewId)
引数viewId
によって参照されるアーティファクトに含まれる VDL からUIViewRoot
を作成します。abstract BeanInfoSE
getComponentMetadata(FacesContext context, Resource componentResource)
引数componentResource
またはメタデータが見つからない場合はnull
で表される複合コンポーネントのコンポーネントメタデータへの参照を返します。StringSE
getId()
このビュー宣言言語を識別するために使用できる null 以外の文字列を返します。abstract Resource
getScriptComponentResource(FacesContext context, Resource componentResource)
引数componentResource
を指定してResource
を検出するために、実装固有のアクションを実行します。abstract StateManagementStrategy
getStateManagementStrategy(FacesContext context, StringSE viewId)
状態の保存と復元の実装を制御する必要のある実装では、StateManagementStrategy
を使用して制御できます。abstract ViewMetadata
getViewMetadata(FacesContext context, StringSE viewId)
引数viewId
またはメタデータが見つからない場合はnull
で表されるビューのビューメタデータへの参照を返します。StreamSE<StringSE>
getViews(FacesContext facesContext, StringSE path, int maxDepth, ViewVisitOption... options)
指定された初期パスをルートとするビューツリーをウォークすることにより、レイジーに配置されたStream
を返します。StreamSE<StringSE>
getViews(FacesContext facesContext, StringSE path, ViewVisitOption... options)
指定された初期パスをルートとするビューツリーをウォークすることにより、レイジーに配置されたStream
を返します。abstract void
renderView(FacesContext context, UIViewRoot view)
引数view
をルートとするビューをレンダリングします。abstract UIViewRoot
restoreView(FacesContext context, StringSE viewId)
以前に作成したビューからUIViewRoot
を復元します。void
retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, ListSE<AttachedObjectHandler> handlers)
引数topLevelComponent
のコンポーネントメタデータがgetComponentMetadata(jakarta.faces.context.FacesContext, jakarta.faces.application.Resource)
への以前の呼び出しで利用可能になっていると仮定して、トップレベルの複合コンポーネントから複合コンポーネント内の個々のAttachedObjectTarget
インスタンスに、アタッチされたオブジェクトのターゲットを変更するために、コンポーネントメタデータを活用します。void
retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent)
引数topLevelComponent
のコンポーネントメタデータがgetComponentMetadata(jakarta.faces.context.FacesContext, jakarta.faces.application.Resource)
への以前の呼び出しで利用可能になっていると仮定して、トップレベルコンポーネントから適切な内部コンポーネントにメソッド式を再ターゲティングする目的でコンポーネントメタデータを活用します。boolean
viewExists(FacesContext context, StringSE viewId)
指定された viewId に対応する物理リソースが存在するかどうかをテストします。
メソッドの詳細
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
で定義された他のライフサイクルメソッドと同じ深さ優先で検出され、その間にビューに追加されます(ただしレンダリングされません)。トラバーサル。ランタイムは、次のいずれかが発生する前に、ビューが完全に入力されている必要があることを保証する必要があります。アプリケーションに接続されている
PhaseListener
のPhaseListener.afterPhase(jakarta.faces.event.PhaseEvent)
メソッドが呼び出されますUIViewRoot.setAfterPhaseListener(jakarta.el.MethodExpression)
またはUIViewRoot.addPhaseListener(jakarta.faces.event.PhaseListener)
を介してインストールされたUIViewRoot
フェーズリスナーが呼び出されます。
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
- コンポーネントを含む完全修飾タグライブラリ URItagName
- コンポーネントを公開するライブラリ内のタグの名前attributes
- 属性を指定する必要がない場合、このコンポーネントまたはnull
の作成を引き起こすマークアップで指定されたであろう名前 = 値のペア。- 戻り値:
- 新しく作成されたコンポーネント
- 例外:
NullPointerExceptionSE
-context
、taglibURI
、tagName
が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
実装によって呼び出される必要があります。以下と意味的に同等のアルゴリズムを実装する必要があります。
複合コンポーネントのメタデータを取得します。現在、これには、
BeanInfo
のインスタンスとなるUIComponent.BEANINFO_KEY
コンポーネント属性の値を取得する必要があります。メタデータが見つからない場合は、エラーメッセージをログに記録して戻ります。BeanInfo
からBeanDescriptor
を取得します。BeanDescriptor
のgetValue()
メソッドからAttachedObjectTarget.ATTACHED_OBJECT_TARGETS_KEY
の値を取得します。これはList<
AttachedObjectTarget
> になります。これを targetList とします。引数
handlers
の各 curHandler エントリについてforAttributeValue を
AttachedObjectHandler.getFor()
からの戻り値とします。targetList 内の各 curTarget エントリに対して、一致する最初の次の項目がこのアクションを実行します。
curTarget.getTargets() から返されたリスト内の各
UIComponent
に対して、FacesContext
とUIComponent
を渡して curHandler.applyAttachedObject() を呼び出します。そして、この内部ループを終了させます。
curHandler が
ActionSource2AttachedObjectHandler
のインスタンスであり、curTarget がActionSource2AttachedObjectTarget
のインスタンスであり、curTarget.getName() が curTargetName と等しい場合は、一致しているとみなします。curHandler が
EditableValueHolderAttachedObjectHandler
のインスタンスであり、curTarget がEditableValueHolderAttachedObjectTarget
のインスタンスであり、curTarget.getName() が curTargetName と等しい場合は、一致と見なします。curHandler が
ValueHolderAttachedObjectHandler
のインスタンスであり、curTarget がValueHolderAttachedObjectTarget
のインスタンスであり、curTarget.getName() が curTargetName と等しい場合は、一致しているとみなします。curHandler が
BehaviorHolderAttachedObjectHandler
のインスタンスであり、curTarget がBehaviorHolderAttachedObjectTarget
のインスタンスであり、以下の条件のいずれかが真である場合- curHandler.getEventName() は
null
ではなく、curTargetName と等しくなります。 - curHandler.getEventName() は
null
であり、curTarget.isDefaultEvent() はtrue
です。
それを一致と見なします。
- curHandler.getEventName() は
実装は、アタッチされたオブジェクトをトップレベルのコンプサイトコンポーネントからコンポジットおよび非コンポジットコンポーネントであるターゲットに再ターゲットすることをサポートする必要があります。
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" と等しい場合、ターゲットは
ActionSource2
であると想定します。name が文字列 "validator" または引用符なしの "valueChangeListener" と等しい場合、ターゲットは
EditableValueHolder
であると想定します。attributeValueExpression で
getExpressionString()
を呼び出し、その文字列を使用して name の適切な署名のMethodExpression
を作成します。name が前述の文字列のいずれとも等しくない場合は、attributeValueExpression で
getExpressionString()
を呼び出し、その文字列を使用して<composite:attribute />
タグの "method-signature
" 属性の値に基づいて署名が作成されるMethodExpression
を作成します。結果として得られる
MethodExpression
を議論のために attributeMethodExpression と呼ぶことにします。name が引用符なしの文字列 "action" と等しい場合は、target に対して
ActionSource2.setActionExpression(jakarta.el.MethodExpression)
を呼び出し、attributeMethodExpression を渡します。name が引用符なしの文字列 "actionListener" と等しい場合は、target で
ActionSource.addActionListener(jakarta.faces.event.ActionListener)
を呼び出し、MethodExpressionActionListener
でラップされた attributeMethodExpression を渡します。name が引用符なしの文字列 "validator" と等しい場合は、target に対して
EditableValueHolder.addValidator(jakarta.faces.validator.Validator)
を呼び出し、MethodExpressionValidator
でラップされた attributeMethodExpression を渡します。name が引用符なしの文字列 "valueChangeListener" と等しい場合は、target で
EditableValueHolder.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 の
Stream
SE - 導入:
- 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_VALUE
SE の値を使用して、すべてのレベルにアクセスする必要があることを示すことができます。- パラメーター:
facesContext
- このリクエストのFacesContext
。path
- ビューの検索を開始する最初のパスmaxDepth
- ルート(/
)から数えた、アクセスするネストされたディレクトリの絶対最大深度。options
- トラバーサルに影響を与えるオプション。これらの詳細については、ViewVisitOption
を参照してください。- 戻り値:
- ビュー ID の
Stream
SE - 導入:
- 2.3
getId
public StringSE getId()
このビュー宣言言語を識別するために使用できる null 以外の文字列を返します。
デフォルトの実装は、ビュー宣言言語実装の完全修飾クラス名を返します。サブクラスは、より意味のある ID を提供するためにオーバーライドできます。
- 戻り値:
- このビュー宣言言語の ID
- 導入:
- 2.1