From 25ff124f372ff3f8d728af4a9c9a8cef840cc4bb Mon Sep 17 00:00:00 2001 From: lrs <1006059906@qq.com> Date: Wed, 19 May 2021 15:09:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validator/controller/TestController.java | 8 ++++ .../GlobalExceptionHandlerAdvice.java | 48 +++++++++++-------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/springboot-validator/src/main/java/top/lrshuai/validator/controller/TestController.java b/springboot-validator/src/main/java/top/lrshuai/validator/controller/TestController.java index 9b0b71d..3b47bd4 100644 --- a/springboot-validator/src/main/java/top/lrshuai/validator/controller/TestController.java +++ b/springboot-validator/src/main/java/top/lrshuai/validator/controller/TestController.java @@ -1,17 +1,25 @@ package top.lrshuai.validator.controller; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import top.lrshuai.validator.dto.TestDto; import javax.validation.Valid; +import javax.validation.constraints.Max; +import javax.validation.constraints.NotNull; @Validated @RestController public class TestController { + @GetMapping("/get") + public String getUser(@NotNull(message = "name 不能为空") String name, @Max(value = 100, message = "age不能大于100岁") Integer age) { + return "name: " + name + " ,age:" + age; + } + @PostMapping("/test") public Object test(@RequestBody @Valid TestDto dto){ System.out.println("dto="+dto.toString()); diff --git a/springboot-validator/src/main/java/top/lrshuai/validator/exception/GlobalExceptionHandlerAdvice.java b/springboot-validator/src/main/java/top/lrshuai/validator/exception/GlobalExceptionHandlerAdvice.java index efd1807..f0282cf 100644 --- a/springboot-validator/src/main/java/top/lrshuai/validator/exception/GlobalExceptionHandlerAdvice.java +++ b/springboot-validator/src/main/java/top/lrshuai/validator/exception/GlobalExceptionHandlerAdvice.java @@ -1,20 +1,15 @@ package top.lrshuai.validator.exception; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.util.StringUtils; -import org.springframework.validation.BindingResult; -import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; import top.lrshuai.validator.commons.Result; -import javax.servlet.http.HttpServletRequest; +import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; -import javax.xml.bind.ValidationException; +import javax.validation.ValidationException; /** * 描述:全局统一异常处理 @@ -24,27 +19,42 @@ @ControllerAdvice public class GlobalExceptionHandlerAdvice { + /** - * 验证异常 + * 参数验证异常 */ @ExceptionHandler(value = {MethodArgumentNotValidException.class}) - @ResponseBody public Result handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { - BindingResult bindingResult = e.getBindingResult(); - String errorMsg = ""; - for (FieldError fieldError : bindingResult.getFieldErrors()) { - errorMsg += fieldError.getDefaultMessage() + ";"; - } + String errorMsg = e.getBindingResult().getFieldError().getDefaultMessage(); if (!StringUtils.isEmpty(errorMsg)) { - log.error("MethodArgumentNotValidException:" + errorMsg); return Result.error(errorMsg); } - return Result.error(); + log.error(e.getMessage(),e); + return Result.error(e.getMessage()); + } + + /** + * 参数验证异常 + */ + @ExceptionHandler(value = {ValidationException.class}) + public Result constraintViolationException(ValidationException e) { + if(e instanceof ConstraintViolationException){ + ConstraintViolationException err = (ConstraintViolationException) e; + ConstraintViolation constraintViolation = err.getConstraintViolations().stream().findFirst().get(); + String messageTemplate = constraintViolation.getMessageTemplate(); + if(!StringUtils.isEmpty(messageTemplate)){ + return Result.error(messageTemplate); + } + } + log.error(e.getMessage(),e); + return Result.error(e.getMessage()); } - @ExceptionHandler(Exception.class) - @ResponseBody - public Result handlerException(Exception e) { + /** + * 默认异常 + */ + @ExceptionHandler(value = Exception.class) + public Result defaultException(Exception e) { log.error("系统异常:" + e.getMessage(), e); return Result.error(); }