繁体   English   中英

NavigationHandler.handleNavigation()是否清除闪存?

[英]Does NavigationHandler.handleNavigation() clear the flash?

我使用的是JSF2.0 Mojarra 2.0.2。

我有一个方法可以注销用户并将注销消息放入闪存中,然后转发到登录页面(其中有一个打印出闪存的div)。 但是,当我使用navigationHandlers handleNavigation方法由于某种原因没有显示flash时。 我有一个类似的方法,如果他/她没有登录,则将用户转发到登录页面。

如果我通过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

你是对的。

JSF 2闪存范围目前是极端错误的,并且基于规范,可能几乎无法使用: http//javaserverfaces.java.net/nonav/docs/2.0/javadocs/index.html

如果您想要一个如下工作的闪存范围,请考虑使用CDI和Seam Faces的闪存范围 - http://docs.jboss.org/seam/3/faces/reference/snapshot/en-US/html_single /#flashscoped

“从对象放置在范围内的那一刻起,闪存范围应该是活动的,直到响应完成渲染为止。”

- 林肯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM