JSF2.0 Mojarra 2.0.2 を使用しています。
ユーザーをログアウトし、ログアウト メッセージをフラッシュに入れ、ログイン ページ (フラッシュを出力する div がある) に転送するメソッドがあります。しかし、なんらかの理由で、navigationHandlers の handleNavigation メソッドを使用すると、フラッシュが表示されません。ログインしていない場合にユーザーをログインページに転送する同様の方法があります。
h:link を介してナビゲーションを処理し、logout メソッドを直接呼び出すだけでは通常どおりフラッシュが表示されますが、handleNavigation() メソッドを使用すると、何らかの理由でフラッシュがクリアされます。
問題のコードは次のとおりです。
public void performLogout()
{
getFacesContext().getExternalContext().invalidateSession();
setCurrentUser(null);
getFlash().put("notice", "Successfully logged out.");
super.getFacesContext().getApplication().getNavigationHandler()
.handleNavigation(getFacesContext(), null, "login");
}
このようにナビゲートするときにフラッシュを保持できる方法はありますか?
ありがとう。
編集: この問題は、xhtml ページが異なるディレクトリにある場合にリダイレクト中にフラッシュが保持されないという別の問題に関連していると思います: http://java.net/jira/browse/JAVASERVERFACES-1635