public abstract class ViewDeclarationLanguageWrapper extends ViewDeclarationLanguage implements FacesWrapper<ViewDeclarationLanguage>
既存の ViewDeclarationLanguage
インスタンスに特殊な動作を提供したい開発者によってサブクラス化することができる ViewDeclarationLanguage
の簡単な実装を提供します。すべてのメソッドのデフォルト実装は、ラップされた ViewDeclarationLanguage
インスタンスを呼び出すことです。
使用方法: このクラスを継承し、ラップされている実装をコンストラクターにプッシュし、getWrapped()
を使用してラップされているインスタンスにアクセスします。
FACELETS_VIEW_DECLARATION_LANGUAGE_ID, JSP_VIEW_DECLARATION_LANGUAGE_ID
コンストラクターと説明 |
---|
ViewDeclarationLanguageWrapper() 使用すべきではありません。 ラップされている実装を使用する他のコンストラクターを使用します。 |
ViewDeclarationLanguageWrapper(ViewDeclarationLanguage wrapped) このビュー宣言言語が装飾されている場合、装飾を行う実装は、ラップされている実装をこのコンストラクターにプッシュする必要があります。 |
修飾子と型 | メソッドと説明 |
---|---|
void | buildView(FacesContext context, UIViewRoot root) 子供たちと一緒に移入する、 |
ListSE<StringSE> | calculateResourceLibraryContracts(FacesContext context, StringSE viewId) 引数 |
UIComponent | createComponent(FacesContext context, StringSE taglibURI, StringSE tagName, MapSE<StringSE, ObjectSE> attributes)
|
UIViewRoot | createView(FacesContext context, StringSE viewId) 引数 |
BeanInfoSE | getComponentMetadata(FacesContext context, Resource componentResource) 引数 |
StringSE | getId() このビュー宣言言語を識別するために使用できる null 以外の文字列を返します。 |
Resource | getScriptComponentResource(FacesContext context, Resource componentResource) 引数 |
StateManagementStrategy | getStateManagementStrategy(FacesContext context, StringSE viewId) 状態の保存と復元の実装を制御する必要のある実装では、 |
ViewMetadata | getViewMetadata(FacesContext context, StringSE viewId) 引数 |
StreamSE<StringSE> | getViews(FacesContext context, StringSE path, int maxDepth, ViewVisitOption... options) 指定された初期パスをルートとするビューツリーをウォークすることにより、レイジーに配置された |
StreamSE<StringSE> | getViews(FacesContext context, StringSE path, ViewVisitOption... options) 指定された初期パスをルートとするビューツリーをウォークすることにより、レイジーに配置された |
ViewDeclarationLanguage | getWrapped() このインターフェースを実装するクラスは、このメソッドを使用して、ラップされているクラスのインスタンスを返します。 |
void | renderView(FacesContext context, UIViewRoot view) 引数 |
UIViewRoot | restoreView(FacesContext context, StringSE viewId) 以前に作成したビューから |
void | retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, ListSE<AttachedObjectHandler> handlers) 引数 |
void | retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent) 引数 |
boolean | viewExists(FacesContext context, StringSE viewId) 指定された viewId に対応する物理リソースが存在するかどうかをテストします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
@DeprecatedSE public ViewDeclarationLanguageWrapper()
public ViewDeclarationLanguageWrapper(ViewDeclarationLanguage wrapped)
このビュー宣言言語が装飾されている場合、装飾を行う実装は、ラップされている実装をこのコンストラクターにプッシュする必要があります。getWrapped()
は、ラップされている実装を返します。
wrapped
- ラップされる実装。public ViewDeclarationLanguage getWrapped()
FacesWrapper
このインターフェースを実装するクラスは、このメソッドを使用して、ラップされているクラスのインスタンスを返します。
FacesWrapper<ViewDeclarationLanguage>
の getWrapped
public UIViewRoot restoreView(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
以前に作成したビューから UIViewRoot
を復元します。デフォルト実装の仕様については、セクション JSF.7.7.2 を参照してください。
ViewDeclarationLanguage
の restoreView
context
- このリクエストの FacesContext
viewId
- 以前にレンダリングされたビューの識別子。public ViewMetadata getViewMetadata(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
引数 viewId
またはメタデータが見つからない場合は null
で表されるビューのビューメタデータへの参照を返します。デフォルト実装の仕様については、セクション JSF.7.7.2 を参照してください。Jakarta Server Faces 2 実装の Facelets は、非 null
を返す必要があります。Jakarta Server Pages 実装は null
を返す必要があります。
ViewDeclarationLanguage
の getViewMetadata
context
- このリクエストの FacesContext
。viewId
- メタデータを抽出するビュー IDpublic UIViewRoot createView(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
引数 viewId
によって参照されるアーティファクトに含まれる VDL から UIViewRoot
を作成します。デフォルトの実装の仕様については、セクション JSF.7.7.2 を参照してください。
ViewDeclarationLanguage
の createView
context
- このリクエストの FacesContext
viewId
- このビューを説明する VDL 構文を含むアーティファクトの識別子。public void buildView(FacesContext context, UIViewRoot root) throws IOExceptionSE
ViewDeclarationLanguage
子供たちと一緒に移入する、ViewDeclarationLanguage.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 と正しくペアリングされるように注意する必要があります。また、ビューからのコンポーネントの追加または削除中に通常生成されるシステムイベントは、ビューの作成中に一時的に無効にし、ビューの作成時に再度有効にする必要があります。
ViewDeclarationLanguage
の buildView
context
- このリクエストの FacesContext
root
- この VDL 実装に固有の手法を使用して、子を実装する UIViewRoot
。IOExceptionSE
- 何らかの理由でビューを構築できない場合 public void renderView(FacesContext context, UIViewRoot view) throws IOExceptionSE
ViewDeclarationLanguage
引数 view
をルートとするビューをレンダリングします。デフォルトの実装の仕様については、セクション JSF.7.7.2 を参照してください。
ViewDeclarationLanguage
の renderView
context
- このリクエストの FacesContext
view
- ViewDeclarationLanguage.createView(jakarta.faces.context.FacesContext, java.lang.String)
または ViewDeclarationLanguage.restoreView(jakarta.faces.context.FacesContext, java.lang.String)
への早期呼び出しからの UIViewRoot
。IOExceptionSE
- 何らかの理由でビューをレンダリングできない場合 public StringSE getId()
ViewDeclarationLanguage
このビュー宣言言語を識別するために使用できる null 以外の文字列を返します。
デフォルトの実装は、ビュー宣言言語実装の完全修飾クラス名を返します。サブクラスは、より意味のある ID を提供するためにオーバーライドできます。
ViewDeclarationLanguage
の getId
public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, ListSE<AttachedObjectHandler> handlers)
ViewDeclarationLanguage
引数 topLevelComponent
のコンポーネントメタデータが ViewDeclarationLanguage.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
のインスタンスであり、以下の条件のいずれかが真である場合
null
ではなく、curTargetName と等しくなります。null
であり、curTarget.isDefaultEvent() は true
です。それを一致と見なします。
実装は、アタッチされたオブジェクトをトップレベルのコンプサイトコンポーネントからコンポジットおよび非コンポジットコンポーネントであるターゲットに再ターゲットすることをサポートする必要があります。
UnsupportedOperationException
をスローする実装が提供されます。バージョン 2.0 に準拠し、仕様を超える Faces 実装は、このメソッドをオーバーライドする必要があります。
ViewDeclarationLanguage
の retargetAttachedObjects
context
- このリクエストの FacesContext。topLevelComponent
- アタッチされたオブジェクトをアタッチする必要があるビューの UIComponent。この UIComponent には、そのコンポーネントメタデータがすでに関連付けられており、JavaBeans API を介して利用できる必要があります。handlers
- アタッチされたオブジェクトのタグハンドラー public void retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent)
ViewDeclarationLanguage
引数 topLevelComponent
のコンポーネントメタデータが ViewDeclarationLanguage.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 実装は、このメソッドをオーバーライドする必要があります。
ViewDeclarationLanguage
の retargetMethodExpressions
context
- このリクエストの FacesContext。topLevelComponent
- アタッチされたオブジェクトをアタッチする必要があるビューの UIComponent。この UIComponent には、そのコンポーネントメタデータがすでに関連付けられており、JavaBeans API を介して利用できる必要があります。public boolean viewExists(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
指定された viewId に対応する物理リソースが存在するかどうかをテストします。
デフォルトの実装では、ResourceHandler.createViewResource(jakarta.faces.context.FacesContext, java.lang.String)
を使用して物理リソースを検索します。
ViewDeclarationLanguage
の viewExists
context
- このリクエストの FacesContext
。viewId
- テストするビュー IDpublic StreamSE<StringSE> getViews(FacesContext context, StringSE path, ViewVisitOption... options)
ViewDeclarationLanguage
指定された初期パスをルートとするビューツリーを進めることにより、おそらく怠惰に設定された Stream
を返します。ビューツリーは幅優先でトラバースされ、ストリーム内の要素は論理ビュー ID です。
このメソッドは、それを呼び出すことは式を評価することと同等であるかのように機能します。
言い換えると、リソースツリーのすべてのレベルにアクセスします。getViewResources(facesContext, start, Integer.MAX_VALUE, options)
ViewDeclarationLanguage
の getViews
context
- このリクエストの FacesContext
。path
- ビューの検索を開始する最初のパス options
- トラバーサルに影響を与えるオプション。これらの詳細については、ViewVisitOption
を参照してください。Stream
SEpublic StreamSE<StringSE> getViews(FacesContext context, StringSE path, int maxDepth, ViewVisitOption... options)
ViewDeclarationLanguage
指定された初期パスをルートとするビューツリーを進めることにより、おそらく怠惰に設定された Stream
を返します。ビューツリーは幅優先でトラバースされ、ストリーム内の要素は論理ビュー ID です。
maxDepth
パラメーターは、常にアクセスされる初期パスを超えてアクセスするディレクトリレベルの最大深度です。値は、指定された初期パスではなく、ルート(/
)を基準にしています。たとえば、maxDepth
= 3
および初期パス /foo/
が与えられた場合、訪問は /foo/bar/
まで進みます。ここで、/
は深さ 1
としてカウントされ、/foo/
は深さ 2
としてカウントされ、/foo/bar/
は深さ 3
としてカウントされます。初期パスの深さ以下の値は、初期パスのみが訪問されることを意味します。MAX_VALUE
SE の値を使用して、すべてのレベルにアクセスする必要があることを示すことができます。
ViewDeclarationLanguage
の getViews
context
- このリクエストの FacesContext
。path
- ビューの検索を開始する最初のパス maxDepth
- ルート(/
)から数えた、アクセスするネストされたディレクトリの絶対最大深度。options
- トラバーサルに影響を与えるオプション。これらの詳細については、ViewVisitOption
を参照してください。Stream
SEpublic ListSE<StringSE> calculateResourceLibraryContracts(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
引数 viewId
で指定されたビューで使用できるようになるリソースライブラリ契約のリストを返します。一致するものが見つからない場合は、空のリストを返します。デフォルトの実装の仕様については、セクション JSF.7.7.2 を参照してください。以前の実装との下位互換性のために、null
を返す実装が提供されていますが、このメソッドが導入された仕様のバージョンに準拠する実装は、JSF.7.7.2 で指定されているように実装する必要があります。
ViewDeclarationLanguage
の calculateResourceLibraryContracts
context
- このリクエストの FacesContext
viewId
- 該当するリソースライブラリ契約を計算する必要があるビュー ID。public UIComponent createComponent(FacesContext context, StringSE taglibURI, StringSE tagName, MapSE<StringSE,ObjectSE> attributes)
ViewDeclarationLanguage
ViewDeclarationLanguage
固有のタグライブラリ URI とタグ名を指定してコンポーネントを作成します。ランタイムは、FaceletsVDL で動作するこのメソッドをサポートする必要があります。他の種類の ViewDeclarationLanguage
がサポートされている場合がありますが、サポートする必要はありません。このメソッドをオーバーライドしない装飾された ViewDeclrationLanguage
実装との下位互換性のために、null
を返すデフォルトの実装が提供されています。ただし、このメソッドが導入された仕様のバージョンに準拠する実装では、このメソッドを実装する必要があります。
ViewDeclarationLanguage
の createComponent
context
- このリクエストの FacesContext
taglibURI
- コンポーネントを含む完全修飾タグライブラリ URItagName
- コンポーネントを公開するライブラリ内のタグの名前 attributes
- 属性を指定する必要がない場合、このコンポーネントまたは null
の作成を引き起こすマークアップで指定されたであろう名前 = 値のペア。public BeanInfoSE getComponentMetadata(FacesContext context, Resource componentResource)
ViewDeclarationLanguage
引数 componentResource
、またはメタデータが見つからない場合は null
で表される複合コンポーネントのコンポーネントメタデータへの参照を返します。デフォルトの実装の仕様については、セクション JSF.7.7.2 を参照してください。Jakarta Server Pages 実装は、UnsupportedOperationException
をスローする必要があります。
ViewDeclarationLanguage
の getComponentMetadata
context
- このリクエストの FacesContext
。componentResource
- コンポーネントを表す Resource
。public Resource getScriptComponentResource(FacesContext context, Resource componentResource)
ViewDeclarationLanguage
引数 componentResource
を指定して、実装固有のアクションを実行して Resource
を検出します。デフォルトの実装の仕様については、セクション JSF.7.7.2 を参照してください。Jakarta Server Pages 実装は、UnsupportedOperationException
をスローする必要があります。
ViewDeclarationLanguage
の getScriptComponentResource
context
- このリクエストの FacesContext
。componentResource
- コンポーネントを表す Resource
。componentResource
に対応する Resource
public StateManagementStrategy getStateManagementStrategy(FacesContext context, StringSE viewId)
ViewDeclarationLanguage
状態の保存と復元の実装を制御したい実装の場合、StateManagementStrategy
ではそれが可能です。null
を返すことは、実装がランタイムに状態の保存と復元を処理することを望んでいることを示します。Jakarta Server Faces 2.0 以降の Facelets に VDL を提供する実装は、このメソッドから非 null
を返す必要があります。
ViewDeclarationLanguage
の getStateManagementStrategy
context
- 現在のリクエストの FacesContext
。viewId
- ビュー ID。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.