我正在使用 JSF2.0 Mojarra 2.0.2。
我有一种方法可以注销用户并将注销消息放入闪存中,然后转发到登录页面(其中有一个打印出闪存的 div)。但是,当我出于某种原因使用 navigationHandlers 的 handleNavigation 方法时,没有显示 Flash。如果他/她没有登录,我有一个类似的方法将用户转发到登录页面。
如果我通过 h:link 处理导航并直接调用 logout 方法,flash 会正常显示,但如果我使用 handleNavigation() 方法,flash 会由于某种原因被清除。
有问题的代码是:
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