我想知道RequestScoped
上下文当前是否在方法中处于活动状态。
目前,我正在做的事情:
@Inject private BeanManager beanManager;
public boolean isRequestScopeActive() {
try {
if (beanManager.getContext(RequestScoped.class).isActive()) {
return true;
} else {
return false;
}
} catch (final ContextNotActiveException e) {
return false;
}
}
我认为仅仅知道范围是否有效就抓住ContextNotActiveException
会有点沉重。
您是否有更好的方法来了解CDI中上下文的状态(是否有效)?
答案 0 :(得分:4)
是的,我们在CDI 1.0中唯一的选择就是捕获ContextNotActiveException。这实际上最终成为应用范围的一个大问题,其中范围实现不可用于注入。例如。您不能只@Inject RequestScopedContextImpl rq;
并检查.isActive()
方法,因为我们在不知道实施细节的情况下无权访问该类。