| 
					
				 | 
			
			
				@@ -1,64 +1,66 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-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 org.slf4j.Logger;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.slf4j.LoggerFactory;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.stereotype.Component;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.bind.annotation.ResponseBody;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.method.HandlerMethod;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.servlet.HandlerExceptionResolver;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.servlet.ModelAndView;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletRequest;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletResponse;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.io.IOException;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * common exception resolver
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @author xuxueli 2016-1-6 19:22:18
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Component
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebExceptionResolver implements HandlerExceptionResolver {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public ModelAndView resolveException(HttpServletRequest request,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			HttpServletResponse response, Object handler, Exception ex) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!(ex instanceof XxlJobException)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			logger.error("WebExceptionResolver:{}", ex);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// if json
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		boolean isJson = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		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/>"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 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;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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 org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.ResponseBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.method.HandlerMethod; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.servlet.HandlerExceptionResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.servlet.ModelAndView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * common exception resolver 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author xuxueli 2016-1-6 19:22:18 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebExceptionResolver implements HandlerExceptionResolver { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public ModelAndView resolveException(HttpServletRequest request, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			HttpServletResponse response, Object handler, Exception 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 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 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mv.addObject("exceptionMsg", errorResult.getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mv.setViewName("/common/common.exception"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return mv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |