加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

处理AJAXified组件的JSF 2.0异常的正确方法是什么?

发布时间:2020-12-16 01:34:44 所属栏目:百科 来源:网络整理
导读:我设置了web.xml,所以任何 java.lang.Throwable(即任何未捕获的异常或错误)将转发到错误页面.然而,对于AJAXified组件,异常不会通过此机制路由到错误页面. 测试用例我有一个简单的CommandButton绑定到一个总是抛出RuntimeException的动作方法.似乎最好的做法
我设置了web.xml,所以任何 java.lang.Throwable(即任何未捕获的异常或错误)将转发到错误页面.然而,对于AJAXified组件,异常不会通过此机制路由到错误页面.

测试用例我有一个简单的CommandButton绑定到一个总是抛出RuntimeException的动作方法.似乎最好的做法是让action方法捕获异常并添加一个类型为error severity的FacesMessage.这是人们做的吗有没有办法配置JSF,以便如果AJAXified组件的备份bean方法抛出异常,可以显示错误页面?

您需要实现一个自定义的 ExceptionHandler,在ajax请求中发生异常时基本上执行以下操作:
String errorPageLocation = "/WEB-INF/errorpages/500.xhtml";
context.setViewRoot(context.getApplication().getViewHandler().createView(context,errorPageLocation));
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();

如果您想要考虑到web.xml错误页面,这不是很简单.您需要解析整个web.xml以找到错误页面位置.此外,当渲染响应中发生异常时,您将基本需要自己重建整个视图. OmniFaces组件库具有这样的异常处理程序,即FullAjaxExceptionHandler.您可以找到完整的源代码here和展示示例here.

也可以看看:

> using ExternalContext.dispatch in JSF error handler causes corrupt page rendering
> Session timeout and ViewExpiredException handling on JSF/PrimeFaces ajax request

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读