有没有办法知道CDI事件是否有任何观察员?

时间:2014-07-10 19:23:33

标签: java events cdi

我的UI中有一个Button,不应该总是添加。它唯一能做的就是在点击时触发CDI事件。

现在,如果没有bean观察到该事件,我想阻止将Button添加到UI。有没有办法查看注入的Event对象上是否有任何观察者或阻止注入它,以便检查它是否为null

1 个答案:

答案 0 :(得分:3)

以下似乎有效:

@Inject
private BeanManager beanManager;

...

Set<ObserverMethod<? super Document>> observers = 
    beanManager.resolveObserverMethods(
        new Document(), new AnnotationLiteral<Any>() {});
observers.isEmpty();

(虽然它可能不是最好的架构。稍后你可能会有一个只有一个空实现的观察者,或者只是根据运行时条件忽略该事件。)