栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么FullAjaxExceptionHandler不能简单地执行ExternalContext#redirect()?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么FullAjaxExceptionHandler不能简单地执行ExternalContext#redirect()?

的主要目的

FullAjaxExceptionHandler
是让ajax请求期间的异常行为与非ajax请求期间的异常行为 完全相同
。开发人员必须能够在两种情况下重用错误页面,而不必在实现错误页面时担心条件。

在非ajax请求期间,重定向不是正常流程的一部分。中的默认

<error-page>
机制
web.xml
执行转发以显示错误页面,而不是重定向。如果执行了重定向,则所有错误页面请求属性(例如)
javax.servlet.error.exception
都会丢失,并呈现为
null
。此外,通常的做法是放置错误页面,
/WEB-INF
以防止最终用户直接访问(并标记和共享)错误页面。重定向将要求它们是可公开访问的,这指示出主要的设计问题(预期目标页面实际上是真正的错误页面吗?)。

如果您确实需要执行到/从错误页面的重定向,则可以在本地增长自定义的异常处理程序,该处理程序显式调用

ExternalContext#redirect()
而不使用
web.xml

<error-page>
机制,或者
<meta http-equiv="refresh"...>
在相关的错误页面的HTML头中添加一个。

如果您确实打算在

ViewExpiredException
发生a
时重定向到某个登录页面,那么您应该意识到“用户未登录”和“会话/视图已过期”的情况之间存在很大差异。对于前者,您根本不应该捉住它
ViewExpiredException
,而应使用一个简单的servlet过滤器,该过滤器检查用户是否已登录并相应地重定向(很早就
FacesServlet
调用了)。普通的身份验证框架(JAAS,Shiro,Spring
Security等)也可以这样工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号