|
@@ -201,20 +201,31 @@ public class GlobalBizExceptionHandler {
|
|
List<ObjectError> globalErrors = exception.getBindingResult().getGlobalErrors();
|
|
List<ObjectError> globalErrors = exception.getBindingResult().getGlobalErrors();
|
|
if (!globalErrors.isEmpty()) {
|
|
if (!globalErrors.isEmpty()) {
|
|
String errorMsg = globalErrors.get(0).getDefaultMessage();
|
|
String errorMsg = globalErrors.get(0).getDefaultMessage();
|
|
- log.warn("类级参数校验异常, ex = {}", errorMsg);
|
|
|
|
|
|
+ log.error("类级参数校验异常, ex = {}", errorMsg);
|
|
return R.failed(errorMsg);
|
|
return R.failed(errorMsg);
|
|
}
|
|
}
|
|
|
|
|
|
// 处理字段级别的校验错误
|
|
// 处理字段级别的校验错误
|
|
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
|
|
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
|
|
if (!fieldErrors.isEmpty()) {
|
|
if (!fieldErrors.isEmpty()) {
|
|
- String errorMsg = fieldErrors.get(0).getDefaultMessage();
|
|
|
|
- log.warn("字段参数绑定异常, ex = {}", errorMsg);
|
|
|
|
- return R.failed(errorMsg);
|
|
|
|
|
|
+ FieldError firstError = fieldErrors.get(0);
|
|
|
|
+ String fieldName = firstError.getField(); // 错误字段名
|
|
|
|
+ String errorCode = firstError.getCode(); // 错误代码(关键:区分错误类型)
|
|
|
|
+ String defaultMsg = firstError.getDefaultMessage(); // 注解中定义的message
|
|
|
|
+
|
|
|
|
+ // 1. 如果是类型转换错误(code为"typeMismatch")
|
|
|
|
+ if ("typeMismatch".equals(errorCode)) {
|
|
|
|
+ log.error("字段[{}]类型转换异常: {}", fieldName, defaultMsg);
|
|
|
|
+ return R.failed("参数类型错误:字段 [" + fieldName + "] 类型不匹配,请检查");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 2. 普通校验错误(如@NotNull、@Size等,使用注解中定义的message)
|
|
|
|
+ log.error("字段[{}]校验异常: {}", fieldName, defaultMsg);
|
|
|
|
+ return R.failed(defaultMsg);
|
|
}
|
|
}
|
|
|
|
|
|
// 兜底错误信息
|
|
// 兜底错误信息
|
|
- log.warn("参数校验异常,但未获取到具体错误信息");
|
|
|
|
|
|
+ log.error("参数校验异常,但未获取到具体错误信息");
|
|
return R.failed("参数校验失败");
|
|
return R.failed("参数校验失败");
|
|
}
|
|
}
|
|
|
|
|