クラス ComponentHandler

実装されたすべてのインターフェース:
FaceletHandler

public class ComponentHandler extends DelegatingMetaTagHandler

ビュー内の UIComponent インスタンスにマップするマークアップ要素インスタンスのパブリック基本クラス。

この特定のコンポーネントに対応するタグが Facelet ビューで検出されると、このクラスのインスタンスが作成され、TagHandlerDelegateFactory.createComponentHandlerDelegate(jakarta.faces.view.facelets.ComponentHandler) に渡されます。コンポーネント、コンバーター、バリデーター、動作のカスタムタグハンドラーは、このクラスから拡張する必要があります。このように、このインスタンスは実装プライベートタグハンドラーのデリゲートとして機能します。このようなサブクラスは、必要に応じてこの基本クラスからメソッドをオーバーライドすることを選択できます。サブクラスが、このコンポーネントがデリゲートである実装固有のタグのアクションを完全にオーバーライドする場合、apply() メソッドをオーバーライドし、この順序で次のアクションを実行する必要があります。これらのアクションは、この facelet が各ユーザーに初めて適用されたときにのみ発生する必要があります。後続のアプリケーションはアクションを実行しないでください。

  1. この要素で表される UIComponent は、適切な Application.createComponent() メソッドで作成されます。

  2. この要素の VDLDocs で指定されているように、マークアップで指定された各属性は、コンポーネントインスタンスに正しく適用されます。

  3. プロジェクトステージが ProjectStage.Development の場合、この要素の Location を、シンボル定数 UIComponent.VIEW_LOCATION_KEY の値で指定されたキーのコンポーネント属性 Map に入れます。

  4. コンポーネントの ID を設定します。id がページ作成者によって手動で指定されている場合、その値を id として設定する必要があります。そうでない場合、UniqueIdVendor のインスタンスである最も近い祖先コンポーネントを見つけ、その UniqueIdVendor.createUniqueId(jakarta.faces.context.FacesContext, java.lang.String) メソッドを呼び出して ID を取得する必要があります。そのようなインスタンスが見つからない場合は、UIViewRoot.createUniqueId() を呼び出して ID を取得します。

  5. コンポーネントの rendererType プロパティが適切に設定されています。

  6. onComponentCreated(jakarta.faces.view.facelets.FaceletContext, jakarta.faces.component.UIComponent, jakarta.faces.component.UIComponent) が呼び出されます。

  7. UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent) は、新しく作成されたコンポーネントで呼び出されます。

  8. facelet チェーンの次のハンドラーが適用されます。これにより、コンポーネントに子が取り込まれます。

  9. コンポーネントがビューの親に追加されます。

  10. UIComponent.popComponentFromEL(jakarta.faces.context.FacesContext) は、新しく作成されたコンポーネントで呼び出されます。

  11. UIComponent.markInitialState() を呼び出します。

このクラスを継承する一般的な使用例は、Facelets ランタイムが Facelets ビューのマークアップに対応するコンポーネントインスタンスを作成するプロセスにアクセスすることです。これらの 3 つの方法は、このような場合に役立ちます。

導入:
2.0
  • コンストラクターの詳細

    • ComponentHandler

      public ComponentHandler(ComponentConfig config)

      実装によって提供される TagHandlerDelegateFactory を活用して、ComponentHandler で使用するために設計された TagHandlerDelegate のインスタンスを作成します。

      パラメーター:
      config - このハンドラーの構成。
      導入:
      2.0
  • メソッドの詳細

    • getTagHandlerDelegate

      protected TagHandlerDelegate getTagHandlerDelegate()
      クラスからコピーされた説明: DelegatingMetaTagHandler

      タグハンドラーデリゲートを取得します。

      DelegatingMetaTagHandler から拡張するコード(直接または間接的に、ComponentHandler を継承するなど)は、このメソッドによって返される TagHandlerDelegate インスタンスを置き換えるのではなく、装飾するように注意する必要があります。そうしないと、予期しない結果が生じる可能性があります。

      次で指定:
      クラス DelegatingMetaTagHandlergetTagHandlerDelegate 
      戻り値:
      タグハンドラーデリゲート。
    • 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 - このビュー実行の FaceletContext 
      c - 作成されたばかりの UIComponent
      parent - この要素インスタンスによって表されるコンポーネントの親 UIComponent
      導入:
      2.0
    • onComponentPopulated

      public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent)

      このメソッドは、コンポーネントに子が移入された後に呼び出されることが保証されています。

      パラメーター:
      ctx - このビュー実行の FaceletContext 
      c - ちょうど子供が住んでいる UIComponent
      parent - この要素インスタンスによって表されるコンポーネントの親 UIComponent
      導入:
      2.0
    • isNew

      public static boolean isNew(UIComponent component)

      渡されたコンポーネントが null でないかどうか、およびそれがツリーにとって新しいかどうかを判別します。この操作は、属性をコンポーネントに接続する必要があるかどうかを判断するために使用できます。

      パラメーター:
      component - 変更するコンポーネント
      戻り値:
      引数が null でなく、ライフサイクルのこの実行中にコンポーネントが新しい場合にのみ true。
      導入:
      2.0