public class ComponentHandler extends DelegatingMetaTagHandler
ビュー内の UIComponent インスタンスにマップするマークアップ要素インスタンスのパブリック基本クラス。
この特定のコンポーネントに対応するタグが Facelet ビューで検出されると、このクラスのインスタンスが作成され、TagHandlerDelegateFactory.createComponentHandlerDelegate(javax.faces.view.facelets.ComponentHandler) に渡されます。コンポーネント、コンバーター、バリデーター、動作のカスタムタグハンドラーは、このクラスから拡張する必要があります。このように、このインスタンスは実装プライベートタグハンドラーのデリゲートとして機能します。このようなサブクラスは、必要に応じてこの基本クラスからメソッドをオーバーライドすることを選択できます。サブクラスが、このコンポーネントがデリゲートである実装固有のタグのアクションを完全にオーバーライドする場合、apply() メソッドをオーバーライドし、この順序で次のアクションを実行する必要があります。これらのアクションは、この facelet が各ユーザーに初めて適用されたときにのみ発生する必要があります。後続のアプリケーションはアクションを実行しないでください。
この要素で表される UIComponent は、適切な Application.createComponent() メソッドで作成されます。
この要素の VDLDocs で指定されているように、マークアップで指定された各属性は、コンポーネントインスタンスに正しく適用されます。
プロジェクトステージが ProjectStage.Development の場合、この要素の Location を、シンボル定数 UIComponent.VIEW_LOCATION_KEY の値で指定されたキーのコンポーネント属性 Map に入れます。
コンポーネントの ID を設定します。id がページ作成者によって手動で指定されている場合、その値を id として設定する必要があります。そうでない場合、UniqueIdVendor のインスタンスである最も近い祖先コンポーネントを見つけ、その UniqueIdVendor.createUniqueId(javax.faces.context.FacesContext, java.lang.String) メソッドを呼び出して ID を取得する必要があります。そのようなインスタンスが見つからない場合は、UIViewRoot.createUniqueId() を呼び出して ID を取得します。
コンポーネントの rendererType プロパティが適切に設定されています。
UIComponent.pushComponentToEL(javax.faces.context.FacesContext, javax.faces.component.UIComponent) は、新しく作成されたコンポーネントで呼び出されます。
facelet チェーンの次のハンドラーが適用されます。これにより、コンポーネントに子が取り込まれます。
コンポーネントがビューの親に追加されます。
UIComponent.popComponentFromEL(javax.faces.context.FacesContext) は、新しく作成されたコンポーネントで呼び出されます。
UIComponent.markInitialState() を呼び出します。
このクラスを継承する一般的な使用例は、Facelets ランタイムが Facelets ビューのマークアップに対応するコンポーネントインスタンスを作成するプロセスにアクセスすることです。これらの 3 つの方法は、このような場合に役立ちます。
UIComponent インスタンスのインスタンス化を制御するために、サブクラスは createComponent(javax.faces.view.facelets.FaceletContext) をオーバーライドできます。このメソッドがオーバーライドされない場合、このインスタンスがデリゲートであるタグハンドラーは、UIComponent をインスタンス化するために必要なアクションを実行します。
UIComponent インスタンスの作成を通知するために、サブクラスは onComponentCreated(javax.faces.view.facelets.FaceletContext, javax.faces.component.UIComponent, javax.faces.component.UIComponent) をオーバーライドできます。
子タグハンドラーの実行の結果、新たに作成された UIComponent インスタンスに子が取り込まれたことを通知するために、サブクラスは onComponentPopulated(javax.faces.view.facelets.FaceletContext, javax.faces.component.UIComponent, javax.faces.component.UIComponent) をオーバーライドできます。
delegateFactorynextHandler, 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, setAttributesgetAttribute, getRequiredAttribute, toStringcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEpublic 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 UIComponentpublic 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 © 2019 Eclipse Foundation.
Use is subject to license terms.