Не удается перенаправить из JSF-фазелистера
Моя проблема похожа на однуВот но не включаетPrimeFaces
в любом случае. Кроме того, я не мог найти реальное решение там.
Я в основном пытаюсь заставить Phaselistener перенаправить на страницу входа в случае, если нет сеанса JSF (когда, например, время сеанса истекло)
Я пытаюсь перенаправить из JSF 2 Phaselistener. Подводя итог, я делаю вот что:
public void beforePhase(PhaseEvent event) {
PhaseId id = event.getPhaseId();
if(id.equals(PhaseId.RESTORE_VIEW)){
FacesContext context = event.getFacesContext();
Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
if(sessionMap==null || sessionMap.isEmpty()){
// No Session, Redirect to login
try {
context.getExternalContext().redirect("/login");
} catch (Exception e) {
...
}
}
}
}
Когда код перенаправления работает, я получаю это исключение:
java.lang.NullPointerException
at org.apache.myfaces.context.servlet.PartialViewContextImpl.getPartialResponseWriter(PartialViewContextImpl.java:301)
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.redirect(ServletExternalContextImpl.java:452)
at com.AuthenticationPhaseListener.userIsNotLogedIn
Что может быть причиной этого? Я делаю это неправильно?
Спасибо!