Bes*_*ces 13 ajax exception-handling jsf-2
我已经设置了web.xml,以便任何java.lang.Throwable(即任何未捕获的异常或错误)将转发到错误页面.但是,对于AJAXified组件,异常不会通过此机制路由到错误页面.
我所拥有的测试用例是一个简单CommandButton
的操作方法,它总是抛出一个RuntimeException
.看起来最好的做法是让action方法捕获异常并添加FacesMessage
类型错误严重性.这是人们做的吗?有没有办法配置JSF,以便如果AJAXified组件的支持bean方法抛出异常,可以显示错误页面?
Bal*_*usC 16
您需要为此实现一个自定义ExceptionHandler
,当ajax请求中发生异常时,它基本上执行以下操作:
String errorPageLocation = "/WEB-INF/errorpages/500.xhtml";
context.setViewRoot(context.getApplication().getViewHandler().createView(context, errorPageLocation));
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();
Run Code Online (Sandbox Code Playgroud)
如果您想要将web.xml
错误页面考虑在内,这并非完全无关紧要.您需要解析整个web.xml
以查找错误页面位置.此外,当渲染响应期间发生异常时,您基本上需要自己重建整个视图.该OmniFaces组件库正好有这样一个异常处理函数,FullAjaxExceptionHandler
.你可以找到完整的源代码在这里和展示例子在这里.
归档时间: |
|
查看次数: |
15559 次 |
最近记录: |