Как зарегистрировать JSF 1.2 PhaseListener в Servlet.init()?

#java #jsf #phaselistener

#java #jsf #phaselistener

Вопрос:

Возможно ли это? FacesContext.getCurrentInstance() возвращает значение null.

Ответ №1:

Обычный сервлет не инициализируется / не вызывается во время запроса JSF, поэтому в сервлете нет средств a FacesContext . Только когда URL-адрес запроса совпадает с FacesServlet , тогда есть FacesContext . Вместо этого вы должны зарегистрировать PhaseListener в faces-config.xml или в управляемом компоненте JSF. Подумайте о том, чтобы сделать это в конструкторе (post) управляемого компонента с областью приложения.

Комментарии:

1. Спасибо за ответ, хотя это то, что я боялся услышать. Я искал решение, которое не нужно изменять faces-config.xml .

2. Пожалуйста. Кстати, начиная с JSF 2.0, можно быстро создавать экземпляры компонентов с областью приложения без необходимости ссылаться на него в любом представлении или другом управляемом компоненте.