Я добавил PhaseListener
к faces-config.xml
:Как @Inject в PhaseListener
<lifecycle>
<phase-listener>com.project.NotificationListener</phase-listener>
</lifecycle>
Класс, кажется, иначе правильным, поскольку это довольно просто.
public class NotificationListener implements PhaseListener {
@Inject
private MyCDIStuff stuff;
@Override
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
@Override
public void beforePhase(PhaseEvent event) {
this.stuff.doStuff();
}
}
Метод 'beforePhase' вызывается правильно, однако объект MyCDIStuff имеет значение NULL. Я попытался использовать аннотацию @Singleton
для класса, который, скорее всего, был неправильным, и он также не делал работу с инъекциями.
Есть ли способ инъецировать управляемые бисин CDI в PhaseListener
?
Я проверил о JSF 2.2. и ответ был «нет», мы не можем этого сделать. Я попробую использовать @Named и получить его из FacesContext. –