在 JSF 应用程序中使用 DI 和拦截器时遇到问题。
我有一个支持 bean,它观察 JSF 事件并执行一些初始数据查找。在 JSF 页面中,bean 被注册为事件监听器,如下所示:
<f:event type="preRenderView" listener="#{myBean.loadData}"/>
bean 非常前卫,看起来基本上是这样的:
@Named
@RequestScoped
public class MyBean {
@EJB
private SomeDao dao;
public void loadData() { ... }
public void performSomeStuff() { ... }
}
道被正确注入,一切都很好,直到这里。现在我想执行一些在拦截器中完成的延迟加载(特定代码无关紧要,因为当拦截器仅在调用上下文上继续时会出现相同的行为)。因此,在调用 performSomeStuff() 之前,我想确保所有数据都已加载:
@Interceptors(MyInterceptor.class)
public void performSomeStuff() { ... }
在这一点上,EJB 不再被注入(NPE 出现了......) - 对此有什么想法吗?
设置:
- 玻璃鱼 3.0.1
- 焊接-000900 1.0.1 (SP3)
- Mojarra 2.0.2 (FCS b10)
提前致谢!
问候,亚历克斯