2013-09-30 148 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」開頭。

但即使您的方法簽名是有效的,您仍然需要檢查哪個參數已通過。這種方法並不能真正簡化這一點。