4

1 つの同じメソッドで複数の CDI イベントを観察することは可能ですか?

例 (もちろん動作しません):

private void listener(@Observes ChangeEvt1 || @Observes ChangeEvt2) {

}

同じメソッドを呼び出す 2 つのリスナー メソッドを作成しないようにする方法はありますか?

4

2 に答える 2

4

いいえ、これは仕様でカバーされていません。申し訳ありません。このようなことを行う最善の方法は、2 つのメソッドを作成してから、それらにプライベート メソッドなどを呼び出させることです。

また、これが仕様でサポートされていることもありません。オブザーバーがあるときはいつでも、そのメソッドへのパラメーターは、Bean マネージャーが満たさなければならない注入ポイントになります。たとえそれが機能したnullとしても、いずれかのパラメーターを取得するため、実際にどのイベントが発生しているかを知ることは困難です。

于 2013-09-30T21:27:38.090 に答える
0

少なくとも JBoss 7.1.3 では、これは不可能です。私は認めざるを得ませんが、私はこれをチェックして、わずかに異なる methode signature: void listener(@Observes ChangeEvt1, @Observes ChangeEvt2). 私の素朴な考えは、コンテナーが不要なパラメーターを null に設定するというものでした (実際には意味がありません)。JBoss が「注釈付きの複数のイベント パラメータを持つことはできません」で起動に失敗しました@Observes

ただし、メソッドの署名が有効であっても、どのパラメーターが渡されたかを確認する必要があります。このアプローチでは、これを単純化することはできません。

于 2013-09-30T15:05:05.117 に答える