2013-09-30 202 views
2

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

实例(这当然不工作):

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

} 

有没有办法不具有创建两个监听方法,然后调用相同的方法?

回答

2

不,这不包括在规范中,对不起。做这种事情的最佳方式是创建两个方法,然后让他们调用一个私有方法或类似的东西。

我也没有看到这种规范支持。任何时候你有一个观察者,该方法的任何参数都会成为豆管理器必须满足的注入点。即使它确实起作用,你也会得到null的任何参数,所以很难知道哪个事件实际上被解雇了。

0

至少在JBoss 7.1.3上这是不可能的。我必须承认,我检查了这个稍微不同的方法签名:void listener(@Observes ChangeEvt1, @Observes ChangeEvt2)。我天真的想法是,容器会将不必要的参数设置为null(实际上它不会使感觉)。 JBoss未能以“注释不能超过一个事件参数@Observes”开头。

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