diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java index d519b9d55..7a5d82c3e 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java @@ -14,6 +14,7 @@ import org.dromara.common.core.exception.SseException; import org.dromara.common.core.exception.base.BaseException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.json.utils.JsonUtils; +import org.springframework.context.MessageSourceResolvable; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.expression.ExpressionException; import org.springframework.http.converter.HttpMessageNotReadableException; @@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.context.request.async.AsyncRequestTimeoutException; +import org.springframework.web.method.annotation.HandlerMethodValidationException; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.servlet.NoHandlerFoundException; @@ -191,6 +193,16 @@ public class GlobalExceptionHandler { return R.fail(message); } + /** + * 方法参数校验异常 用于处理 @Validated 注解 + */ + @ExceptionHandler(HandlerMethodValidationException.class) + public R handlerMethodValidationException(HandlerMethodValidationException e) { + log.error(e.getMessage()); + String message = StreamUtils.join(e.getAllErrors(), MessageSourceResolvable::getDefaultMessage, ", "); + return R.fail(message); + } + /** * JSON 解析异常(Jackson 在处理 JSON 格式出错时抛出) * 可能是请求体格式非法,也可能是服务端反序列化失败