处理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(); 如果您想要考虑到web.xml错误页面,这不是很简单.您需要解析整个web.xml以找到错误页面位置.此外,当渲染响应中发生异常时,您将基本需要自己重建整个视图. OmniFaces组件库具有这样的异常处理程序,即 也可以看看: > using ExternalContext.dispatch in JSF error handler causes corrupt page rendering (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |