【发布时间】:2011-06-26 22:11:30
【问题描述】:
考虑以下情况。 在会话超时(过期)后,我正在单击 JSF 表单的提交按钮。 浏览器显示一些异常消息:
ViewExpiredException:无法恢复视图上下文
我想要做的是,在会话过期后自动重定向到网站的主页。这样做的机制是什么?任何帮助将不胜感激。
【问题讨论】:
标签: jsf jsf-2 session-timeout viewexpiredexception
考虑以下情况。 在会话超时(过期)后,我正在单击 JSF 表单的提交按钮。 浏览器显示一些异常消息:
ViewExpiredException:无法恢复视图上下文
我想要做的是,在会话过期后自动重定向到网站的主页。这样做的机制是什么?任何帮助将不胜感激。
【问题讨论】:
标签: jsf jsf-2 session-timeout viewexpiredexception
要在 HTTP 会话已过期且 JSF 视图状态保存方法设置为 server 时在页面上调用同步 POST 请求时处理异常,请将 <error-page> 添加到 web.xml捕获 JSF ViewExpiredException 并显示主页。
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/home.xhtml</location>
</error-page>
要同时处理异步 (ajax) 请求的异常,您需要实现自定义 ExceptionHandler,如 Session timeout and ViewExpiredException handling on JSF/PrimeFaces ajax request 中所回答的那样
【讨论】:
<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.xhtml</location> </error-page>我仍然从 glassfish 服务器得到异常。 HTTP Status 500 - **type** Exception report **message** **description** The server encountered an internal error () that prevented it from fulfilling this request. **exception** javax.faces.application.ViewExpiredException: viewId:/home.xhtml - View /home.xhtml could not be restored 有什么建议吗?
FacesServlet 映射到 /faces/* 而不是 *.xhtml 出于某种原因。只需相应地更改它以摆脱丑陋的附加 /faces 路径。这个小配置问题与这里提出的具体问题完全无关。