Я хочу внедрить bean-компоненты @SessionScoped
и @RequestScoped
в свою реализацию PhaseListener
, но у меня получилось NullPointerException
.
Я использую tomcat с реализацией сварки для достижения CDI. Я начал переходить с JSF 2.2 на 2.3, поэтому перешел с FacesContext
на CDI. Ну, я заменил @ManagedBean
на @Named
и любые другие вещи, которые необходимо сделать во время миграции, такие как: - добавить XML bean-компонентов в каждый модуль - добавить BeanManager в XML-контекст - удалить объявления bean-компонентов из Faces-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
введенный bean-компонент имеет значение null в методе afterPhase
.
@Inject
что-то добавить в Phaselistener с помощью внедрения полей (используя openWebbeans, Mojarra 2.3, CDI API 2.0). Отменил мой флаг дублирования, и меня интересует решение. Поэтому проголосовал. - person Selaron   schedule 31.01.2019