| | |
| | | package com.xxl.job.admin.controller.resolver; |
| | | |
| | | import com.xxl.job.admin.core.exception.XxlJobException; |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import com.xxl.job.admin.core.util.JacksonUtil; |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | */ |
| | | @Component |
| | | public class WebExceptionResolver implements HandlerExceptionResolver { |
| | | private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class); |
| | | private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class); |
| | | |
| | | @Override |
| | | public ModelAndView resolveException(HttpServletRequest request, |
| | | HttpServletResponse response, Object handler, Exception ex) { |
| | | @Override |
| | | public ModelAndView resolveException(HttpServletRequest request, |
| | | HttpServletResponse response, Object handler, Exception ex) { |
| | | |
| | | if (!(ex instanceof XxlJobException)) { |
| | | logger.error("WebExceptionResolver:{}", ex); |
| | | } |
| | | if (!(ex instanceof XxlJobException)) { |
| | | logger.error("WebExceptionResolver:{}" , ex); |
| | | } |
| | | |
| | | // if json |
| | | boolean isJson = false; |
| | | if (handler instanceof HandlerMethod) { |
| | | HandlerMethod method = (HandlerMethod)handler; |
| | | ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class); |
| | | if (responseBody != null) { |
| | | isJson = true; |
| | | } |
| | | } |
| | | // if json |
| | | boolean isJson = false; |
| | | if (handler instanceof HandlerMethod) { |
| | | HandlerMethod method = (HandlerMethod) handler; |
| | | ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class); |
| | | if (responseBody != null) { |
| | | isJson = true; |
| | | } |
| | | } |
| | | |
| | | // error result |
| | | ReturnT<String> errorResult = new ReturnT<String>(ReturnT.FAIL_CODE, ex.toString().replaceAll("\n", "<br/>")); |
| | | // error result |
| | | ReturnT<String> errorResult = new ReturnT<String>(ReturnT.FAIL_CODE, ex.toString().replaceAll("\n" , "<br/>")); |
| | | |
| | | // response |
| | | ModelAndView mv = new ModelAndView(); |
| | | if (isJson) { |
| | | try { |
| | | response.setContentType("application/json;charset=utf-8"); |
| | | response.getWriter().print(JacksonUtil.writeValueAsString(errorResult)); |
| | | } catch (IOException e) { |
| | | logger.error(e.getMessage(), e); |
| | | } |
| | | return mv; |
| | | } else { |
| | | // response |
| | | ModelAndView mv = new ModelAndView(); |
| | | if (isJson) { |
| | | try { |
| | | response.setContentType("application/json;charset=utf-8"); |
| | | response.getWriter().print(JacksonUtil.writeValueAsString(errorResult)); |
| | | } catch (IOException e) { |
| | | logger.error(e.getMessage(), e); |
| | | } |
| | | return mv; |
| | | } else { |
| | | |
| | | mv.addObject("exceptionMsg", errorResult.getMsg()); |
| | | mv.setViewName("/common/common.exception"); |
| | | return mv; |
| | | } |
| | | } |
| | | |
| | | } |
| | | mv.addObject("exceptionMsg" , errorResult.getMsg()); |
| | | mv.setViewName("/common/common.exception"); |
| | | return mv; |
| | | } |
| | | } |
| | | |
| | | } |