【发布时间】:2012-11-07 14:28:24
【问题描述】:
我有一个 JSF 2 应用程序并在 web.xml 中配置了以下内容:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/error.html</location>
</error-page>
出于测试目的,我在带有 @PostConstruct 注释的 init 方法中的 @SessionScoped 类中有以下代码,以便让会话快速过期:
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
session.setMaxInactiveInterval(5);
现在,当我有一个h:commandButton 和outcome = "somepage.jsf" 时,5 秒后的点击将重定向到错误页面。
当我改为调用一些 bean 操作或使用 action 属性将页面名称放在同一个按钮上时,我会在服务器日志中看到 ViewExpiredException,但不会发生重定向。
为什么会这样?以及在会话过期后无论发生什么操作,一般如何重定向到另一个页面?
【问题讨论】:
-
此操作是否由 ajax 请求执行?这可以解释症状。
-
是的,有一个
f:axax参与其中。但是除此之外该怎么办,因为在页面上什么都没有发生? -
应该是
f:ajax当然...
标签: jsf-2 viewexpiredexception