在ajax的异常处理中,直接返回IMoocJSONResult是不行的,会再抛出一个
Error resolving template template might not exist or might not be accessible 的异常,而不是我们预想的byZero的异常,这时候需要使用MappingJackson2HttpMessageConverter把IMoocJSONResult手动写入 HttpServletResponse中。
private static final String ERROR_VIEW = "error";
@Autowired
private MappingJackson2HttpMessageConverter jsonConverter;
@ExceptionHandler(value = Exception.class)
public Object error(HttpServletRequest request, HttpServletResponse response, Exception e) throws HttpMessageNotWritableException, IOException {
if(isAjax(request)) {
MyJSONResult result = MyJSONResult.errorException(e.getMessage());
jsonConverter.write(result, MediaType.APPLICATION_JSON, new ServletServerHttpResponse(response));
return null;
} else {
ModelAndView mav = new ModelAndView();
mav.addObject("exception",e);
mav.addObject("url", request.getRequestURL());
mav.setViewName(ERROR_VIEW);
return mav;
}
}
学了了,我就说我的代码一模一样,结果缺不一样
一群人自以为懂了,瞎带节奏
大佬牛逼,我还郁闷为啥视频的跑得起来呢,还特意从github下载了源码
尽信书不如无书,这哥们的是对的。
老师的虽然跑起来了,但是alert输出的结果不对,然后就不讲了,这哥们的才是对的。
@RestControllerAdvice
试试
这个是我的ajax
我能成功啊 不知道你这个异常怎么来的
学习了,但是不知道为啥老师的代码能够跑成功,我反复看了几遍以为他加了什么特殊配置,然而并没有找到。。。
你是对的。。。
优秀,学习了
是的,学习了
不赖、学习了