Spring @ControllerAdvice ExceptionHandler基于内容类型

Anu*_*ama 5 spring content-type exceptionhandler

我们需要在所有端点支持html和json响应.

html将由我们自己的前端应用程序使用,json将由第三方API集成使用.

我们使用ContentNegotiatingViewResolver分别对html和json内容使用JstlView和MappingJackson2JsonView,效果很好.使用单个控制器方法,我们获得基于url扩展名的html/json输出.

我们希望通过@ControllerAdvice/@ExceptionHandler为全局ExceptionHandler提供类似的技术.但在解析为视图之前,似乎没有考虑内容类型.

  • 如何让ExceptionHandler根据url.extension选择正确的视图来生成html或json?(注意:我不想使用@ResponseBody或ResponseEntity,因为我需要一个ModelAndView来输出基于html的错误页面)

  • 我可以创建一个自定义视图解析器来为ExceptionHandling执行此操作吗?如何在Spring配置中将其拼接在一起,我的ContentNegotiationViewResolver用于正常响应?