fb51a3a6e65761ba2b336fa2d2621cc81070e49e.svn-base 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.xxl.job.admin.controller.resolver;
  2. import com.xxl.job.admin.core.exception.XxlJobException;
  3. import com.xxl.job.core.biz.model.ReturnT;
  4. import com.xxl.job.admin.core.util.JacksonUtil;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.bind.annotation.ResponseBody;
  9. import org.springframework.web.method.HandlerMethod;
  10. import org.springframework.web.servlet.HandlerExceptionResolver;
  11. import org.springframework.web.servlet.ModelAndView;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import java.io.IOException;
  15. /**
  16. * common exception resolver
  17. *
  18. * @author xuxueli 2016-1-6 19:22:18
  19. */
  20. @Component
  21. public class WebExceptionResolver implements HandlerExceptionResolver {
  22. private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class);
  23. @Override
  24. public ModelAndView resolveException(HttpServletRequest request,
  25. HttpServletResponse response, Object handler, Exception ex) {
  26. if (!(ex instanceof XxlJobException)) {
  27. logger.error("WebExceptionResolver:{}", ex);
  28. }
  29. // if json
  30. boolean isJson = false;
  31. HandlerMethod method = (HandlerMethod)handler;
  32. ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class);
  33. if (responseBody != null) {
  34. isJson = true;
  35. }
  36. // error result
  37. ReturnT<String> errorResult = new ReturnT<String>(ReturnT.FAIL_CODE, ex.toString().replaceAll("\n", "<br/>"));
  38. // response
  39. ModelAndView mv = new ModelAndView();
  40. if (isJson) {
  41. try {
  42. response.setContentType("application/json;charset=utf-8");
  43. response.getWriter().print(JacksonUtil.writeValueAsString(errorResult));
  44. } catch (IOException e) {
  45. logger.error(e.getMessage(), e);
  46. }
  47. return mv;
  48. } else {
  49. mv.addObject("exceptionMsg", errorResult.getMsg());
  50. mv.setViewName("/common/common.exception");
  51. return mv;
  52. }
  53. }
  54. }