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)
をオーバーライドできます。
delegateFactory
nextHandler, tag, tagId
コンストラクターと説明 |
---|
ComponentHandler(ComponentConfig config) 実装によって提供される |
修飾子と型 | メソッドと説明 |
---|---|
UIComponent | createComponent(FaceletContext ctx) このタグハンドラーに対応する |
ComponentConfig | getComponentConfig() |
protected TagHandlerDelegate | getTagHandlerDelegate() タグハンドラーデリゲートを取得します。 |
static boolean | isNew(UIComponent component) 渡されたコンポーネントが null ではなく、ツリーにとって新しいものであるかどうかを判断します。 |
void | onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent) このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。 |
void | onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent) このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。 |
apply, applyNextHandler, createMetaRuleset, getBinding, getTag, getTagAttribute, getTagId, isDisabled, setAttributes
getAttribute, getRequiredAttribute, toString
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public ComponentHandler(ComponentConfig config)
実装によって提供される TagHandlerDelegateFactory
を活用して、ComponentHandler
で使用するために設計された TagHandlerDelegate
のインスタンスを作成します。
config
- このハンドラーの構成。protected TagHandlerDelegate getTagHandlerDelegate()
DelegatingMetaTagHandler
タグハンドラーデリゲートを取得します。
DelegatingMetaTagHandler から拡張するコード(直接または間接的に、ComponentHandler を継承するなど)は、このメソッドによって返される TagHandlerDelegate インスタンスを置き換えるのではなく、装飾するように注意する必要があります。そうしないと、予期しない結果が生じる可能性があります。
DelegatingMetaTagHandler
の getTagHandlerDelegate
public ComponentConfig getComponentConfig()
public UIComponent createComponent(FaceletContext ctx)
このタグハンドラーに対応する UIComponent
インスタンスをインスタンス化するタスクを引き継ぐサブクラスは、このメソッドをオーバーライドしてそうします。このメソッドから null
が返されると、たとえば TagHandlerDelegate
が代わりにコンポーネントを作成します。
ctx
- このビュー実行の FaceletContext
UIComponent
public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent)
このメソッドは、コンポーネントが作成された後、子が移入される前に呼び出されることが保証されています。
ctx
- このビュー実行の FaceletContext
c
- 作成されたばかりの UIComponent
。parent
- この要素インスタンスによって表されるコンポーネントの親 UIComponent
。public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent)
このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。
ctx
- このビュー実行の FaceletContext
c
- ちょうど子供が住んでいる UIComponent
。parent
- この要素インスタンスによって表されるコンポーネントの親 UIComponent
。public static boolean isNew(UIComponent component)
渡されたコンポーネントが null でないかどうか、およびそれがツリーにとって新しいかどうかを判別します。この操作は、属性をコンポーネントに接続する必要があるかどうかを判断するために使用できます。
component
- 変更するコンポーネント null
でなく、ライフサイクルのこの実行中にコンポーネントが新しい場合にのみ true。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.