|
@@ -2,6 +2,7 @@ package com.yushu.framework.web.core.handler;
|
|
|
|
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
import com.yushu.framework.apilog.core.service.ApiErrorLogFrameworkService;
|
|
import com.yushu.framework.apilog.core.service.ApiErrorLogFrameworkService;
|
|
import com.yushu.framework.apilog.core.service.dto.ApiErrorLogCreateDTO;
|
|
import com.yushu.framework.apilog.core.service.dto.ApiErrorLogCreateDTO;
|
|
@@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.validation.BindException;
|
|
import org.springframework.validation.BindException;
|
|
import org.springframework.validation.FieldError;
|
|
import org.springframework.validation.FieldError;
|
|
|
|
+import org.springframework.validation.ObjectError;
|
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
import org.springframework.web.bind.MissingServletRequestParameterException;
|
|
import org.springframework.web.bind.MissingServletRequestParameterException;
|
|
@@ -32,7 +34,9 @@ import javax.servlet.http.HttpServletRequest;
|
|
import javax.validation.ConstraintViolation;
|
|
import javax.validation.ConstraintViolation;
|
|
import javax.validation.ConstraintViolationException;
|
|
import javax.validation.ConstraintViolationException;
|
|
import javax.validation.ValidationException;
|
|
import javax.validation.ValidationException;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
import static com.yushu.framework.common.exception.enums.GlobalErrorCodeConstants.*;
|
|
import static com.yushu.framework.common.exception.enums.GlobalErrorCodeConstants.*;
|
|
@@ -55,9 +59,6 @@ public class GlobalExceptionHandler {
|
|
@Autowired
|
|
@Autowired
|
|
private ApiErrorLogFrameworkService apiErrorLogFrameworkService;
|
|
private ApiErrorLogFrameworkService apiErrorLogFrameworkService;
|
|
|
|
|
|
- //private final String applicationName;
|
|
|
|
- //private final ApiErrorLogFrameworkService apiErrorLogFrameworkService;
|
|
|
|
-
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* 处理所有异常,主要是提供给 Filter 使用
|
|
* 处理所有异常,主要是提供给 Filter 使用
|
|
@@ -126,9 +127,19 @@ public class GlobalExceptionHandler {
|
|
@ExceptionHandler(MethodArgumentNotValidException.class)
|
|
@ExceptionHandler(MethodArgumentNotValidException.class)
|
|
public CommonResult<?> methodArgumentNotValidExceptionExceptionHandler(MethodArgumentNotValidException ex) {
|
|
public CommonResult<?> methodArgumentNotValidExceptionExceptionHandler(MethodArgumentNotValidException ex) {
|
|
log.warn("[methodArgumentNotValidExceptionExceptionHandler]", ex);
|
|
log.warn("[methodArgumentNotValidExceptionExceptionHandler]", ex);
|
|
- FieldError fieldError = ex.getBindingResult().getFieldError();
|
|
|
|
- assert fieldError != null; // 断言,避免告警
|
|
|
|
- return CommonResult.error(BAD_REQUEST.getCode(), String.format("请求参数不正确:%s", fieldError.getDefaultMessage()));
|
|
|
|
|
|
+ List<ObjectError> errors = ex.getBindingResult().getAllErrors();
|
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
|
+ List<String> errorArr = new ArrayList<>();
|
|
|
|
+ for (ObjectError error : errors) {
|
|
|
|
+ if (error instanceof FieldError) {
|
|
|
|
+ FieldError fieldError = (FieldError) error;
|
|
|
|
+ errorArr.add(fieldError.getField() + fieldError.getDefaultMessage());
|
|
|
|
+ } else {
|
|
|
|
+ errorArr.add(error.getObjectName() + error.getDefaultMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ String errMsg = StrUtil.join(";", errorArr.toArray(new String[]{}));
|
|
|
|
+ return CommonResult.error(BAD_REQUEST.getCode(), String.format("请求参数不正确:%s", errMsg));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -148,8 +159,14 @@ public class GlobalExceptionHandler {
|
|
@ExceptionHandler(value = ConstraintViolationException.class)
|
|
@ExceptionHandler(value = ConstraintViolationException.class)
|
|
public CommonResult<?> constraintViolationExceptionHandler(ConstraintViolationException ex) {
|
|
public CommonResult<?> constraintViolationExceptionHandler(ConstraintViolationException ex) {
|
|
log.warn("[constraintViolationExceptionHandler]", ex);
|
|
log.warn("[constraintViolationExceptionHandler]", ex);
|
|
|
|
+ //@RequestParam 参数校验失败
|
|
|
|
+ List<String> errorArr = new ArrayList<>();
|
|
|
|
+ for (ConstraintViolation constraint : ex.getConstraintViolations()) {
|
|
|
|
+ errorArr.add(constraint.getInvalidValue() + "非法" + constraint.getMessage());
|
|
|
|
+ }
|
|
ConstraintViolation<?> constraintViolation = ex.getConstraintViolations().iterator().next();
|
|
ConstraintViolation<?> constraintViolation = ex.getConstraintViolations().iterator().next();
|
|
- return CommonResult.error(BAD_REQUEST.getCode(), String.format("请求参数不正确:%s", constraintViolation.getMessage()));
|
|
|
|
|
|
+ String errMsg = StrUtil.join(";", errorArr.toArray(new String[]{}));
|
|
|
|
+ return CommonResult.error(BAD_REQUEST.getCode(), String.format("请求参数不正确:%s", errMsg));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|