概述
我們知道,Spring BeanValidation可以用來校驗我們客戶的提交的參數對應的Bean對象。但是在很多情況,我們的參數只有一個簡單字符串或者是數字型參數(采用@RequestParam注解),要想使用SpringValidation還需要把這簡單的參數包裝成對象,甚是麻煩。下面我們看下,怎么樣才能使@RequestParam注解的參數也可以使用Spring Validatio呢。
方案
1.Spring容器注入MethodValidationPostProcessor對象 (spring-mvc.xml配置)
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
注意:如果Sping配置文件和SpringMVC配置文件分別獨立,需要把這個配置加到SpringMVC配置中
2.使用@Validated注解
在對應的Controller中加上@Validated注解,當然也可以加到獨立的請求方法中
3.使用校驗注解
@RestController @Validated public class TestController { @RequestMapping("/test") public String test(@NotBlank(message = "姓名不能為空") @RequestParam("name") String name) { // ..... return ResponseVO.successWithNoData("ok"); } }
4.局校驗異常捕捉
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ConstraintViolationException.class) @ResponseBody @ResponseStatus(HttpStatus.BAD_REQUEST) public String handleValidationException(ConstraintViolationException e){ for(ConstraintViolation<?> s:e.getConstraintViolations()){ return s.getInvalidValue()+": "+s.getMessage(); } return "請求參數不合法"; } }
轉 : https://blog.csdn.net/onupway/article/details/78367629