我有一个 JSF 2 应用程序并配置了以下内容web.xml
:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/error.html</location>
</error-page>
@SessionScoped
出于测试目的,我在一个带有注释的 init 方法中的类中有以下代码,@PostConstruct
以便让会话快速过期:
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
session.setMaxInactiveInterval(5);
现在,当我有一个h:commandButton
withoutcome = "somepage.jsf"
然后在 5s 之后单击将重定向到错误页面。
当我改为调用一些 bean 操作或使用属性将页面名称放在同一个按钮上时action
,我会ViewExpiredException
在服务器日志中看到 ,但不会发生重定向。
为什么呢?以及在会话过期后发生的任何操作,通常如何重定向到另一个页面?