Java ee会话/会话/视图超时重定向

时间:2013-10-30 06:36:55

标签: jsf java-ee cdi session-timeout viewexpiredexception

我的环境是:NetBeans7.2.1,GlassFish3.1,JSF2和Weld 1.1.0。

我正试图在其中一种情况下(会话/会话/视图超时)重定向到错误页面。

根据我的阅读,有多种选择:

  1. <error-page>内使用web.xml(但由于某些原因,当location使用error.xhtml页面时,它不起作用,只能使用servlet - {{{ 3}}关于这个问题的问题)。

  2. <exception-handler-factory>内使用faces-config.xmlCustomExceptionHandler示例中使用@WebFilter

  3. this示例中使用error.xhtml

  4. 我的主要问题是,在我重定向到NavigationHandler nav = fc.getApplication().getNavigationHandler(); nav.handleNavigation(fc, null, "/error"); facesContext.renderResponse();页面后,我想禁用返回上一页。所以,即使用户点击后退按钮,他仍然会被重定向到错误页面。

    当异常发生时,我能够重定向到错误页面,但无法清除缓存,因此当用户返回时,他仍然可以看到上一页内容。

    我不完全了解上述3个选项之间的差异,以及每个选项的作用究竟是什么。

    有人可以解释一下吗?

    之间的差异是什么?

    ((HttpServletResponse)response).sendRedirect("yourCustomJSF.jsf");

    {{1}}?

    如何通过重定向和清除缓存来处理这些异常,以便用户无法看到上一页?

    感谢提前。

2 个答案:

答案 0 :(得分:0)

您可以将此用于处理过期的会话/视图:

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/index.jsf</location>
</error-page>

答案 1 :(得分:0)

  

我的主要问题是,在我重定向到error.xhtml页面后,我想禁用返回上一页。所以,即使用户点击后退按钮,他仍然会被重定向到错误页面

执行此操作使用过滤器不缓存页面并将请求发送到服务器 看到这个以获得过滤器的代码

https://stackoverflow.com/a/19034603/2422368