クラス ComponentHandler
- java.lang.ObjectSE
-
- jakarta.faces.view.facelets.TagHandler
-
- jakarta.faces.view.facelets.MetaTagHandler
-
- jakarta.faces.view.facelets.DelegatingMetaTagHandler
-
- jakarta.faces.view.facelets.ComponentHandler
- 実装済みのインターフェース一覧:
FaceletHandler
public class ComponentHandler extends DelegatingMetaTagHandler
ビュー内の
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のインスタンスを作成します。
方法の概要
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 UIComponentcreateComponent(FaceletContext ctx)このタグハンドラーに対応するUIComponentインスタンスをインスタンス化するタスクを引き継ぐサブクラスは、このメソッドをオーバーライドしてそうします。ComponentConfiggetComponentConfig()コンポーネント構成 (component-type/renderer-type ペア) を返します。protected TagHandlerDelegategetTagHandlerDelegate()タグハンドラーデリゲートを取得します。static booleanisNew(UIComponent component)渡されたコンポーネントが null ではなく、ツリーにとって新しいものであるかどうかを判断します。voidonComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent)このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。voidonComponentPopulated(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
public ComponentHandler(ComponentConfig config)
実装によって提供される
TagHandlerDelegateFactoryを活用して、ComponentHandlerで使用するために設計されたTagHandlerDelegateのインスタンスを作成します。- パラメーター:
config- このハンドラーの構成。- 導入:
- 2.0
メソッドの詳細
getTagHandlerDelegate
protected TagHandlerDelegate getTagHandlerDelegate()
クラスからコピーされた説明:DelegatingMetaTagHandlerタグハンドラーデリゲートを取得します。
DelegatingMetaTagHandler から拡張するコード(直接または間接的に、ComponentHandler を継承するなど)は、このメソッドによって返される TagHandlerDelegate インスタンスを置き換えるのではなく、装飾するように注意する必要があります。そうしないと、予期しない結果が生じる可能性があります。
- 次で指定:
- クラス
DelegatingMetaTagHandlerのgetTagHandlerDelegate - 戻り値:
- タグハンドラーデリゲート。
getComponentConfig
public ComponentConfig getComponentConfig()
コンポーネント構成 (component-type/renderer-type ペア) を返します。- 戻り値:
- コンポーネント構成
createComponent
public UIComponent createComponent(FaceletContext ctx)
このタグハンドラーに対応する
UIComponentインスタンスをインスタンス化するタスクを引き継ぐサブクラスは、このメソッドをオーバーライドしてそうします。このメソッドからnullが返されると、たとえばTagHandlerDelegateが代わりにコンポーネントを作成します。- パラメーター:
ctx- このビュー実行のFaceletContext- 戻り値:
- 新しく作成された
UIComponent - 導入:
- 2.2
onComponentCreated
public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent)
このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。
- パラメーター:
ctx- このビュー実行のFaceletContextc- 作成されたばかりのUIComponent。parent- この要素インスタンスによって表されるコンポーネントの親UIComponent。- 導入:
- 2.0
onComponentPopulated
public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent)
このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。
- パラメーター:
ctx- このビュー実行のFaceletContextc- ちょうど子供が住んでいるUIComponent。parent- この要素インスタンスによって表されるコンポーネントの親UIComponent。- 導入:
- 2.0
isNew
public static boolean isNew(UIComponent component)
渡されたコンポーネントが null でないかどうか、およびそれがツリーにとって新しいかどうかを判別します。この操作は、属性をコンポーネントに接続する必要があるかどうかを判断するために使用できます。
- パラメーター:
component- 変更するコンポーネント- 戻り値:
- 引数が
nullでなく、ライフサイクルのこの実行中にコンポーネントが新しい場合にのみ true。 - 導入:
- 2.0