一般都是用注解@responsebody
但是若方法返回类型限制为ModelAndView时就要这样写了
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object object, Exception exception) {
ModelAndView mav = new ModelAndView();
MappingJackson2JsonView view = new MappingJackson2JsonView();
Map attributes = new HashMap();
attributes.put("success", Boolean.TRUE);
attributes.put("contractNo", "contractNo");
view.setAttributesMap(attributes);
mav.setView(view);
return mav;
}
这样写是可以通过的,以后在研究原理,先记下。
返回错误
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object object, Exception exception) {
//是否为ajax请求
String requestType = request.getHeader("X-Requested-With");
if(exception instanceof AuthorizationException){
response.setStatus(413);//无权限异常 主要用于ajax请求返回
response.addHeader("Error-Json", "{\"code\":413,\"msg\":\"nopermission\"}");
response.setContentType("text/html;charset=utf-8");
if("XMLHttpRequest".equals(requestType)){
return new ModelAndView();
}
return new ModelAndView("redirect:/html/413.html");
}
return null;
}
} 这里返回http错误码和错误信息Error-Json在responseHeader里,在前端js可以使用getResponseHeader('Error-Json'))获得返回的错误消息。
本文介绍在Spring MVC中如何处理异常并返回JSON响应。通过使用ModelAndView结合MappingJackson2JsonView来构建JSON响应的方式,适用于不支持@Responsebody注解的情况。此外还展示了如何针对不同类型的异常返回HTTP错误码及自定义错误信息。
385

被折叠的 条评论
为什么被折叠?



