我的环境是:NetBeans7.2.1,GlassFish3.1,JSF2和Weld 1.1.0。
我正试图在其中一种情况下(会话/会话/视图超时)重定向到错误页面。
根据我的阅读,有多种选择:
在<error-page>
内使用web.xml
(但由于某些原因,当location
使用error.xhtml
页面时,它不起作用,只能使用servlet - {{{ 3}}关于这个问题的问题)。
在<exception-handler-factory>
内使用faces-config.xml
,CustomExceptionHandler
示例中使用@WebFilter
。
在this示例中使用error.xhtml
。
我的主要问题是,在我重定向到NavigationHandler nav = fc.getApplication().getNavigationHandler();
nav.handleNavigation(fc, null, "/error");
facesContext.renderResponse();
页面后,我想禁用返回上一页。所以,即使用户点击后退按钮,他仍然会被重定向到错误页面。
当异常发生时,我能够重定向到错误页面,但无法清除缓存,因此当用户返回时,他仍然可以看到上一页内容。
我不完全了解上述3个选项之间的差异,以及每个选项的作用究竟是什么。
有人可以解释一下吗?
之间的差异是什么?
((HttpServletResponse)response).sendRedirect("yourCustomJSF.jsf");
和
{{1}}?
如何通过重定向和清除缓存来处理这些异常,以便用户无法看到上一页?
感谢提前。
答案 0 :(得分:0)
您可以将此用于处理过期的会话/视图:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/index.jsf</location>
</error-page>
答案 1 :(得分:0)
我的主要问题是,在我重定向到error.xhtml页面后,我想禁用返回上一页。所以,即使用户点击后退按钮,他仍然会被重定向到错误页面
执行此操作使用过滤器不缓存页面并将请求发送到服务器 看到这个以获得过滤器的代码