アノテーション型 ListenerFor
@RetentionSE(RUNTIMESE) @TargetSE(TYPESE) @InheritedSE @RepeatableSE(ListenersFor.class) public @interface ListenerFor
このアノテーションでタグ付けされたクラスは、メソッド
Application.subscribeToEvent(java.lang.Class<? extends jakarta.faces.event.SystemEvent>, java.lang.Class<?>, jakarta.faces.event.SystemEventListener)
またはUIComponent.subscribeToEvent(java.lang.Class<? extends jakarta.faces.event.SystemEvent>, jakarta.faces.event.ComponentSystemEventListener)
(状況に応じて、以下で説明)を使用してリスナーとしてインストールされます。デフォルトの実装では、このアノテーションを
UIComponent
またはRenderer
クラスにアタッチすることをサポートする必要があります。どちらの場合も、ここで説明するアノテーション処理は、Application
.createComponent()
のバリアントの実装中に開始する必要があり、UIComponent
インスタンスがcreateComponent()
から返される前に完了する必要があります。アノテーション処理は、意味的に次と同等のアルゴリズムに従って続行する必要があります。このアノテーションが問題のクラスに存在しない場合、アクションを実行する必要はありません。
subscribeToEvent
を呼び出す「ターゲット」を決定します。このアノテーションが付加されているクラスが
ComponentSystemEventListener
を実装し、UIComponent
インスタンスである場合、「ターゲット」はUIComponent
インスタンスです。このアノテーションが付加されているクラスが
ComponentSystemEventListener
を実装し、Renderer
インスタンスである場合、「ターゲット」は、このRenderer
インスタンスによってレンダリングされるUIComponent
インスタンスです。このアノテーションが付加されているクラスが
ComponentSystemEventListener
を実装し、Renderer
のインスタンスでもUIComponent
のインスタンスでもない場合、実行されるアクションは指定されていません。この場合、いかなる種類のエラーも引き起こしてはなりません。このアノテーションが付加されているクラスが
SystemEventListener
を実装し、ComponentSystemEventListener
を実装していない場合、「ターゲット」はApplication
インスタンスです。呼び出す
subscribeToEvent()
のバリアントと、それに渡すパラメーターを決定します。"target" が
UIComponent
の場合、UIComponent.subscribeToEvent(Class, ComponentSystemEventListener)
を呼び出し、最初の引数としてアノテーションのsystemEventClass()
を渡し、2 番目の引数としてこのアノテーションがアタッチされているクラスのインスタンス(ComponentSystemEventListener
を実装する必要があります)を渡します。「ターゲット」が
Application
インスタンスの場合、sourceClass()
アノテーション属性値の値を調べます。値が
Void.class
の場合は、Application.subscribeToEvent(Class, SystemEventListener)
を呼び出し、systemEventClass()
の値を最初の引数として渡し、このアノテーションが付加されているクラスのインスタンス(SystemEventListener) as the second argument.
を実装する必要があります)を渡します。それ以外の場合は、
Application.subscribeToEvent(Class, Class, SystemEventListener)
を呼び出し、systemEventClass()
の値を最初の引数として、sourceClass()
の値を 2 番目の引数として、このアノテーションが付加されているクラスのインスタンス(SystemEventListener) as the third argument.
を実装する必要があります)を渡します。
サンプル:
jakarta.faces.resource.Stylesheet
の標準レンダラーには、次のアノテーション宣言が必要です。@ListenerFor(systemEventClass=PostAddToViewEvent.class)
これにより、レンダラーが
PostAddToViewEvent
のリスナーとして、レンダラーとしてリストされているすべてのコンポーネントに追加されます。- 導入:
- 2.0
必須定数のサマリー
必須要素 修飾子と型 必須要素 説明 ClassSE<? extends SystemEvent>
systemEventClass
このクラスがリスナーとしてインストールされるシステムイベントの種類。
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 ClassSE
sourceClass
systemEventClass()
属性の値によって指定された型のイベントを発行するオブジェクトの種類。
要素の詳細
systemEventClass
ClassSE<? extends SystemEvent> systemEventClass
このクラスがリスナーとしてインストールされるシステムイベントの種類。実装は
Class
での完全一致のみをサポートし、サブクラスの関連を尊重してはなりません。式が予期された型のインスタンスに解決される限り、この属性の値に EL 式を含めることは有効です。- 戻り値:
- イベントクラス
sourceClass
ClassSE sourceClass
systemEventClass()
属性の値によって指定された型のイベントを発行するオブジェクトの種類。式が予期された型のインスタンスに解決される限り、この属性の値に Jakarta Expression Language Expressions を含めることは有効です。- 戻り値:
- ソースクラス
- デフォルト:
- java.lang.Void.class