Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 观察多个CDI事件?_Java_Jakarta Ee_Cdi - Fatal编程技术网

Java 观察多个CDI事件?

Java 观察多个CDI事件?,java,jakarta-ee,cdi,Java,Jakarta Ee,Cdi,是否可以在同一方法上观察多个CDI事件 示例(当然不起作用): 有没有办法不创建两个侦听器方法,然后调用同一个方法?至少在JBoss 7.1.3上是不可能的。我必须承认,我检查了这个有点不同的methode签名:void listener(@Observes ChangeEvt1,@Observes ChangeEvt2)。我天真的想法是,容器会将不必要的参数设置为null(实际上它没有意义)。JBoss无法以“不能为多个事件参数添加注释”开头 但是,即使您的方法签名有效,您仍然需要检查传递了哪

是否可以在同一方法上观察多个CDI事件

示例(当然不起作用):


有没有办法不创建两个侦听器方法,然后调用同一个方法?

至少在JBoss 7.1.3上是不可能的。我必须承认,我检查了这个有点不同的methode签名:
void listener(@Observes ChangeEvt1,@Observes ChangeEvt2)
。我天真的想法是,容器会将不必要的参数设置为null(实际上它没有意义)。JBoss无法以“不能为多个事件参数添加注释”开头


但是,即使您的方法签名有效,您仍然需要检查传递了哪个参数。这种方法并不能真正简化这一点。

不,这在规范中没有涉及,抱歉。这样做的最佳方法是创建这两个方法,然后让它们调用私有方法或类似的方法

我也看不到规范支持这一点。每当您有一个观察者时,该方法的任何参数都将成为Bean管理器必须满足的注入点。即使它确实有效,您也会得到任何参数的
null
,因此很难知道实际触发的是哪个事件

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

}