我在 Spring 4.0.3 中使用以下异常处理程序来拦截异常并向用户显示自定义错误页面:
@ControllerAdvice
public class ExceptionHandlerController
{
@ExceptionHandler(value = Exception.class)
public ModelAndView handleError(HttpServletRequest request, Exception e)
{
ModelAndView mav = new ModelAndView("/errors/500"));
mav.addObject("exception", e);
return mav;
}
}
但现在我想要对 JSON 请求进行不同的处理,以便在发生异常时获得此类请求的 JSON 错误响应。目前上面的代码也是由 JSON 请求触发的(使用Accept: application/json
header)并且 JavaScript 客户端不喜欢 HTML 响应。
如何以不同的方式处理 HTML 和 JSON 请求的异常?
ControllerAdvice 注释有一个名为 basePackage 的元素/属性,可以设置它来确定应该扫描哪些包来查找控制器并应用建议。因此,您可以做的就是将处理普通请求的控制器和处理 AJAX 请求的控制器分离到不同的包中,然后编写 2 个带有适当的 ControllerAdvice 注释的异常处理控制器。例如:
@ControllerAdvice("com.acme.webapp.ajaxcontrollers")
public class AjaxExceptionHandlingController {
...
@ControllerAdvice("com.acme.webapp.controllers")
public class ExceptionHandlingController {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)