【问题标题】:What is the correct way to deal with JSF 2.0 exceptions for AJAXified components?处理 AJAXified 组件的 JSF 2.0 异常的正确方法是什么?
【发布时间】:2012-05-14 01:25:04
【问题描述】:

我已设置 web.xml,以便任何 java.lang.Throwable(即任何未捕获的异常或错误)都将转发到错误页面。但是,对于 AJAXified 组件,异常不会通过此机制路由到错误页面。

我的测试用例是一个简单的CommandButton,绑定到一个总是抛出RuntimeException 的动作方法。似乎最好的做法是让操作方法捕获异常并添加类型为错误严重性的FacesMessage。这是人们做的吗?有没有办法配置 JSF,以便在 AJAXified 组件的支持 bean 方法抛出异常时可以显示错误页面?

【问题讨论】:

    标签: ajax jsf-2 exception-handling


    【解决方案1】:

    您需要为此实现自定义 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

    另见:

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多