Jsf 2 在ajax请求中引发ViewExpiredException时重定向
我在处理ajax请求中的Jsf 2 在ajax请求中引发ViewExpiredException时重定向,jsf-2,richfaces,omnifaces,Jsf 2,Richfaces,Omnifaces,我在处理ajax请求中的viewExpiredException时遇到问题。 在我的特殊情况下,它是一个丰富的:datascroller,它会产生问题。我使用omnifaces 1.8.1的FullAjaxExceptionHandler来处理Ajax组件抛出的Vee web.xml: <error-page> <exception-type>javax.faces.application.ViewExpiredException</exceptio
viewExpiredException
时遇到问题。
在我的特殊情况下,它是一个丰富的:datascroller
,它会产生问题。我使用omnifaces 1.8.1的FullAjaxExceptionHandler
来处理Ajax组件抛出的Vee
web.xml:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/my/pages/error/viewExpired.xhtml</location>
</error-page>
如果会话过期,单击datascroller按钮,我会看到调用了我的handle()方法,但转发到主页的操作不起作用
对于版本1,什么都不会发生,对于版本2,我首先得到一个空白屏幕,如果我使用浏览器按钮刷新页面,handle()方法将再次被调用,并成功重定向到主页
你能在我的代码中看到任何错误吗?重定向没有效果,因为
FullAjaxExceptionHandler
完全接管了呈现,因此JSF无法将ajax重定向写入响应。更改视图没有任何效果,因为FullAjaxExceptionHandler
此时已经拥有错误页面视图,并且不会为更改的视图查阅FacesContext
。因为错误页本身是空白的,所以屏幕是空白的
只需让浏览器自行重定向即可。使用JS窗口。位置
。将整个viewExpired.xhtml
页面替换为以下内容:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>window.location="#{request.contextPath}/path/to/home.xhtml";</script>
</body>
</html>
window.location=“#{request.contextPath}/path/to/home.xhtml”;
重定向无效,因为FullAjaxExceptionHandler
完全接管了呈现,因此JSF无法将ajax重定向写入响应。更改视图没有任何效果,因为FullAjaxExceptionHandler
此时已经拥有错误页面视图,并且不会为更改的视图查阅FacesContext
。因为错误页本身是空白的,所以屏幕是空白的
只需让浏览器自行重定向即可。使用JS窗口。位置
。将整个viewExpired.xhtml
页面替换为以下内容:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>window.location="#{request.contextPath}/path/to/home.xhtml";</script>
</body>
</html>
window.location=“#{request.contextPath}/path/to/home.xhtml”;
你好,巴卢斯克!谢谢你的回答。不幸的是,这个解决方案只适用于Chrome。Firefox和IE8(实际上是我唯一需要支持的浏览器)继续显示空白页面。我注意到,空白页面的HTML“头”和VEE发生的一样。该应用程序使用servlet过滤器,既不更改响应也不进行sendRedirect():我是否必须检查其他特定内容?谢谢您的ajax是否由RichFaces处理?我用另一个选项更新了答案。是的。并且使用Javascript重定向工作!:)再次感谢你!嗨,巴卢斯克!谢谢你的回答。不幸的是,这个解决方案只适用于Chrome。Firefox和IE8(实际上是我唯一需要支持的浏览器)继续显示空白页面。我注意到,空白页面的HTML“头”和VEE发生的一样。该应用程序使用servlet过滤器,既不更改响应也不进行sendRedirect():我是否必须检查其他特定内容?谢谢您的ajax是否由RichFaces处理?我用另一个选项更新了答案。是的。并且使用Javascript重定向工作!:)再次感谢你!
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>window.location="#{request.contextPath}/path/to/home.xhtml";</script>
</body>
</html>