クラス ComponentHandler
- 実装されたすべてのインターフェース:
FaceletHandler
ビュー内の UIComponent
インスタンスにマップするマークアップ要素インスタンスのパブリック基本クラス。
この特定のコンポーネントに対応するタグが Facelet ビューで検出されると、このクラスのインスタンスが作成され、TagHandlerDelegateFactory.createComponentHandlerDelegate(jakarta.faces.view.facelets.ComponentHandler)
に渡されます。コンポーネント、コンバーター、バリデーター、動作のカスタムタグハンドラーは、このクラスから拡張する必要があります。このように、このインスタンスは実装プライベートタグハンドラーのデリゲートとして機能します。このようなサブクラスは、必要に応じてこの基本クラスからメソッドをオーバーライドすることを選択できます。サブクラスが、このコンポーネントがデリゲートである実装固有のタグのアクションを完全にオーバーライドする場合、apply()
メソッドをオーバーライドし、この順序で次のアクションを実行する必要があります。これらのアクションは、この facelet が各ユーザーに初めて適用されたときにのみ発生する必要があります。後続のアプリケーションはアクションを実行しないでください。
この要素で表される
UIComponent
は、適切なApplication.createComponent()
メソッドで作成されます。この要素の VDLDocs で指定されているように、マークアップで指定された各属性は、コンポーネントインスタンスに正しく適用されます。
プロジェクトステージが
ProjectStage.Development
の場合、この要素のLocation
を、シンボル定数UIComponent.VIEW_LOCATION_KEY
の値で指定されたキーのコンポーネント属性Map
に入れます。コンポーネントの ID を設定します。id がページ作成者によって手動で指定されている場合、その値を id として設定する必要があります。そうでない場合、
UniqueIdVendor
のインスタンスである最も近い祖先コンポーネントを見つけ、そのUniqueIdVendor.createUniqueId(jakarta.faces.context.FacesContext, java.lang.String)
メソッドを呼び出して ID を取得する必要があります。そのようなインスタンスが見つからない場合は、UIViewRoot.createUniqueId()
を呼び出して ID を取得します。コンポーネントの rendererType プロパティが適切に設定されています。
UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)
は、新しく作成されたコンポーネントで呼び出されます。facelet チェーンの次のハンドラーが適用されます。これにより、コンポーネントに子が取り込まれます。
コンポーネントがビューの親に追加されます。
UIComponent.popComponentFromEL(jakarta.faces.context.FacesContext)
は、新しく作成されたコンポーネントで呼び出されます。UIComponent.markInitialState()
を呼び出します。
このクラスを継承する一般的な使用例は、Facelets ランタイムが Facelets ビューのマークアップに対応するコンポーネントインスタンスを作成するプロセスにアクセスすることです。これらの 3 つの方法は、このような場合に役立ちます。
UIComponent
インスタンスのインスタンス化を制御するために、サブクラスはcreateComponent(jakarta.faces.view.facelets.FaceletContext)
をオーバーライドできます。このメソッドがオーバーライドされない場合、このインスタンスがデリゲートであるタグハンドラーは、UIComponent
をインスタンス化するために必要なアクションを実行します。UIComponent
インスタンスの作成を通知するために、サブクラスはonComponentCreated(jakarta.faces.view.facelets.FaceletContext, jakarta.faces.component.UIComponent, jakarta.faces.component.UIComponent)
をオーバーライドできます。子タグハンドラーの実行の結果、新たに作成された
UIComponent
インスタンスに子が取り込まれたことを通知するために、サブクラスはonComponentPopulated(jakarta.faces.view.facelets.FaceletContext, jakarta.faces.component.UIComponent, jakarta.faces.component.UIComponent)
をオーバーライドできます。
- 導入:
- 2.0
フィールドのサマリー
クラス jakarta.faces.view.facelets.DelegatingMetaTagHandler から継承されたフィールド
delegateFactory
クラス jakarta.faces.view.facelets.TagHandler から継承されたフィールド
nextHandler, tag, tagId
コンストラクターの概要
コンストラクターコンストラクター説明ComponentHandler
(ComponentConfig config) 実装によって提供されるTagHandlerDelegateFactory
を活用して、ComponentHandler
で使用するために設計されたTagHandlerDelegate
のインスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明このタグハンドラーに対応するUIComponent
インスタンスをインスタンス化するタスクを引き継ぐサブクラスは、このメソッドをオーバーライドしてそうします。コンポーネント構成 (component-type/renderer-type ペア) を返します。protected TagHandlerDelegate
タグハンドラーデリゲートを取得します。static boolean
isNew
(UIComponent component) 渡されたコンポーネントが null ではなく、ツリーにとって新しいものであるかどうかを判断します。void
onComponentCreated
(FaceletContext ctx, UIComponent c, UIComponent parent) このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。void
onComponentPopulated
(FaceletContext ctx, UIComponent c, UIComponent parent) このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。クラス jakarta.faces.view.facelets.DelegatingMetaTagHandler から継承されたメソッド
apply, applyNextHandler, createMetaRuleset, getBinding, getTag, getTagAttribute, getTagId, isDisabled, setAttributes
クラス jakarta.faces.view.facelets.TagHandler から継承されたメソッド
getAttribute, getRequiredAttribute, toString
コンストラクターの詳細
ComponentHandler
実装によって提供される
TagHandlerDelegateFactory
を活用して、ComponentHandler
で使用するために設計されたTagHandlerDelegate
のインスタンスを作成します。- パラメーター:
config
- このハンドラーの構成。- 導入:
- 2.0
メソッドの詳細
getTagHandlerDelegate
クラスからコピーされた説明:DelegatingMetaTagHandler
タグハンドラーデリゲートを取得します。
DelegatingMetaTagHandler から拡張するコード(直接または間接的に、ComponentHandler を継承するなど)は、このメソッドによって返される TagHandlerDelegate インスタンスを置き換えるのではなく、装飾するように注意する必要があります。そうしないと、予期しない結果が生じる可能性があります。
- 次で指定:
- クラス
DelegatingMetaTagHandler
のgetTagHandlerDelegate
- 戻り値:
- タグハンドラーデリゲート。
getComponentConfig
コンポーネント構成 (component-type/renderer-type ペア) を返します。- 戻り値:
- コンポーネント構成
createComponent
このタグハンドラーに対応する
UIComponent
インスタンスをインスタンス化するタスクを引き継ぐサブクラスは、このメソッドをオーバーライドしてそうします。このメソッドからnull
が返されると、たとえばTagHandlerDelegate
が代わりにコンポーネントを作成します。- パラメーター:
ctx
- このビュー実行のFaceletContext
- 戻り値:
- 新しく作成された
UIComponent
- 導入:
- 2.2
onComponentCreated
このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。
- パラメーター:
ctx
- このビュー実行のFaceletContext
c
- 作成されたばかりのUIComponent
。parent
- この要素インスタンスによって表されるコンポーネントの親UIComponent
。- 導入:
- 2.0
onComponentPopulated
このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。
- パラメーター:
ctx
- このビュー実行のFaceletContext
c
- ちょうど子供が住んでいるUIComponent
。parent
- この要素インスタンスによって表されるコンポーネントの親UIComponent
。- 導入:
- 2.0
isNew
渡されたコンポーネントが null でないかどうか、およびそれがツリーにとって新しいかどうかを判別します。この操作は、属性をコンポーネントに接続する必要があるかどうかを判断するために使用できます。
- パラメーター:
component
- 変更するコンポーネント- 戻り値:
- 引数が
null
でなく、ライフサイクルのこの実行中にコンポーネントが新しい場合にのみ true。 - 導入:
- 2.0