当前位置: 首页 > 面试题库 >

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

关正雅
2023-03-14
问题内容

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

我拥有的测试用例很简单CommandButton,并且总是与引发的action方法绑定在一起RuntimeException。似乎最佳实践似乎是让action方法捕获异常并添加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。你可以找到完整的源代码在这里和展示例子在这里。



 类似资料:
  • 问题内容: 我已经设置了web.xml,以便所有java.lang.Throwable(即任何未捕获的异常或错误)都可以转发到错误页面。但是,对于AJAXified组件,不会通过此机制将异常路由到错误页面。 我拥有的测试用例很简单,并且总是与引发的action方法绑定在一起。似乎最佳实践似乎是让action方法捕获异常并添加类型错误严重性。这是人们的工作吗?有没有一种方法可以配置JSF,以便如果A

  • 本文向大家介绍Java中断异常的正确处理方法,包括了Java中断异常的正确处理方法的使用技巧和注意事项,需要的朋友参考一下 处理InterruptedException 这个故事可能很熟悉:你正在写一个测试程序,你需要暂停某个线程一段时间,所以你调用 Thread.sleep()。然后编译器或 IDE 就会抱怨说 InterruptedException 没有抛出声明或捕获。什么是 Interru

  • 问题内容: 我使用10gen的本机node.js驱动器将mongodb(2.2.2)与node.js一起使用。 起初一切顺利。但是当涉及到并发基准测试部分时,会发生很多错误。频繁进行1000次并发连接/关闭可能会导致mongodb拒绝任何进一步的请求,并出现以下错误: 另外,如果许多客户端在没有显式关闭的情况下关闭,则mongodb将花费几分钟的时间来检测并关闭它们。这也将导致类似的连接问题。(使

  • 我试试看。js与mongodb(2.2.2)一起使用本机节点。js drive by 10gen。 起初一切都很顺利。但在并发基准测试部分,出现了很多错误。频繁连接/关闭1000次并发可能会导致mongodb拒绝任何进一步的请求,错误如下: 此外,如果很多客户端在没有显式关闭的情况下关闭,mongodb需要几分钟来检测并关闭它们。这也会导致类似的连接问题。(使用/var/log/mongodb/m

  • 我想知道,当我试图在数据库中创建并持久化对象时,处理异常的最佳方法。 因此,我有一个名为Rule的表,其中包含getter和setter: 我有一个方法create谁在数据库中添加对象: 我应该为每个异常使用多个catch吗?谁的方法可以抛出try块 如果我的解决方案是处理异常的好方法,那么如何才能以好的方式打印与异常相关的特定消息 如何在JUnit5中为块的内容引发异常,以测试是否引发了异常(我

  • 我有一个超时执行任务的方法。我使用ExecutorServer.submit()获取一个Future对象,然后调用future.get()并超时。这很好,但是我的问题是处理我的任务可能抛出的检查异常的最好方法。下面的代码工作正常,并且保留了被检查的异常,但是如果方法签名中被检查的异常的列表改变了,它看起来非常笨拙并且容易出错。 关于如何解决这个问题的任何建议?我需要以Java 5为目标,但我也很好