1

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

在其中一种情况下(会话/对话/查看超时),我正在尝试重定向到错误页面。

从我读到的有很多选择:

  1. <error-page>在内部使用web.xml(但由于某种原因,当我使用location页面error.xhtml时它不起作用,只能使用 servlet - 就这个问题提出了这个问题)。

  2. 在此示例中使用<exception-handler-factory>inside faces-config.xmlwhich 将使用CustomExceptionHandlerlike 。

  3. 在此示例中使用@WebFilter类似。

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

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

我不完全了解上述 3 个选项之间的差异,以及每个选项的确切作用。

有人可以解释一下吗?

有什么区别

NavigationHandler nav = fc.getApplication().getNavigationHandler(); nav.handleNavigation(fc, null, "/error"); facesContext.renderResponse();

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

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

提前致谢。

4

2 回答 2

0

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

为此,请使用过滤器不缓存页面并将请求发送到服务器,而不是查看此以获取过滤器的代码

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

于 2013-10-30T16:27:51.807 回答
0

您可以使用它来处理过期的会话/视图:

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/index.jsf</location>
</error-page>
于 2013-10-30T10:05:06.213 回答