4

我正在尝试为 Spring MVC 服务的每个请求返回一个有效的 JSON 正文,包括正确和无效。

使用和我自己@ExceptionHandler的组合ExceptionHandlerExceptionResolver,我可以为几乎所有被分派到有效控制器或被 Spring Security 拒绝的无效请求处理和设置主体。DefaultHandlerExceptionResolverAbstractHandlerExceptionResolver

但是,DispatcherServletlike抛出的错误noHandlerFound无法被拦截,因此响应有一个有效的 HTTP 状态码,如 404,但正文包含 Tomcat 默认 XML 错误。

任何人都知道如何设置或配置 Spring Exception Resolver,以便拦截所有失败的请求并设置有效的 JSON 正文?

4

1 回答 1

0

有一节解释了 Spring 如何为调度程序 servlet 处理异常解析器:

调度程序的异常解决策略可以通过 HandlerExceptionResolver 指定,例如将某些异常映射到错误页面。默认为 AnnotationMethodHandlerExceptionResolver、ResponseStatusExceptionResolver 和 DefaultHandlerExceptionResolver。这些 HandlerExceptionResolver 可以通过应用程序上下文覆盖。HandlerExceptionResolver 可以被赋予任何 bean 名称(它们按类型进行测试)。

为了能够支持 Dispatcher 异常处理覆盖,您必须实现HandlerExceptionResolverOrdered 分类并将实现声明为 spring bean。您必须返回getOrderInteger.MIN_VALUE以覆盖任何其他现有处理程序。

于 2015-09-08T06:07:42.137 回答