3 つの JSF 2.0 Web モジュールがあり、セッションの有効期限が切れたときにログイン ページにリダイレクトする必要があります。
HttpSessionListener
イベントメソッドを呼び出していますsessionDestroyed()
が、そこでリクエストを転送/リダイレクトできません。HttpServletRequest
オブジェクトがないからだと思いHttpServletResponse
ます。
も使用してみPhaseListener
ましたが、ウェブブラウザで「リダイレクトが多すぎます」というエラーが発生します。
public class SessionListener implements PhaseListener {
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
public void beforePhase(PhaseEvent event) {
if (!FacesContext.getCurrentInstance().isPostback()) {
try {
System.out.println("Session Destroyed");
FacesContext.getCurrentInstance().getExternalContext().redirect("login.jsf");
}
catch (Exception e) {
System.out.println("error" + e);
}
}
}
public void afterPhase(PhaseEvent event) {
try {
System.out.println("Session Created");
}
catch (Exception e) {
System.out.println("error" + e);
}
}
}
それらの試みがうまくいかないのはなぜですか?