我想在我的实现中注入一个@SessionScoped
和一个@RequestScoped
bean PhaseListener
,但我得到了NullPointerException
.
我使用带有焊接实现的tomcat来实现CDI。我开始将 JSF 2.2 迁移到 2.3,所以我从FacesContext
. 好吧,我替换@ManagedBean
了 to@Named
以及迁移期间必须做的任何其他事情,例如: - 将 bean XML 添加到每个模块 - 将 BeanManager 添加到上下文 XML - 从 faces-config.xml 删除 bean 声明 - 将 SPIBeanManager
作为 resource-env-ref 添加到 web。 xml 如何将任何 bean 注入到PhaseListener
实现中?
@Named
@SessionScoped
public class MyHandler implements Serializable {
..}
@Named
@RequestScoped
public class MyController extends MyParentController<Example> {
..}
public class MyPhaseListener implements PhaseListener {
private MyHandler myHandler;
private MyController myController;
@Inject
public void setMyHandler(MyHandler myHandler) {
this.myHandler= myHandler;
}
@Inject
public void setMyController (MyController myController) {
this.myController= myController;
}
...
public void afterPhase(PhaseEvent event) {
myHandler.method()
}
myHandler
注入的 bean 在afterPhase
方法中为空。