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

前端之家收集整理的这篇文章主要介绍了处理AJAXified组件的JSF 2.0异常的正确方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我设置了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();@H_404_8@ 
 

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

也可以看看:

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

猜你在找的Ajax相关文章