我想知道 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 中上下文的状态(事件与否)吗?
最佳答案
不,我们在 CDI 1.0 中的唯一选择是捕获 ContextNotActiveException。
您的解决方案应该有效。
这实际上最终成为一个问题,因为范围实现不可用于注入(inject)。
例如。你不能只是@Inject RequestScopedContextImpl rq;
并检查 rq.isActive()
方法,因为我们在不知道 CDI 本身的实现细节的情况下无法访问该类。
关于java-ee-6 - 有没有办法在不捕获 ContextNotActiveException 的情况下知道状态是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507109/