commit
f5155e9d41
1 changed files with 65 additions and 63 deletions
@ -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; |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue