Я хочу добавить бины @SessionScoped
и @RequestScoped
в мою реализацию PhaseListener
, но я получил NullPointerException
.
Я использую tomcat с реализацией сварки для достижения CDI.Я начал мигрировать JSF 2.2 на 2.3, поэтому я перешел на CDI с FacesContext
.Ну, я заменил @ManagedBean
на @Named
и любые другие вещи, которые необходимо сделать во время миграции, такие как: - добавление bean-XML в каждый модуль - добавление BeanManager в контекст XML - удаление объявлений bean-компонентов изface-config.xml - добавление SPI BeanManager
как 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
injected bean равен null в методе afterPhase
.