错误原因
我分组了,但是controller方法参数用的是注解@Valid,而且改成@Validated之后忘记指定分组了。。
导致根本就没有校验。
补充
1.是否导包 (我的是Spring Boot 2.1.18 Release)
pom.xml导包
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
(如果版本太高可能用不了JSR303,据说Spring2.3.x的版本取消了JSR依赖包,这种情况需要导包,详见其他情况)
? ?
2.实体类上,有没有指定分组 ? ? 3.Controller的方法参数要加@Valid 注解(如果分组了就要改成@Validated(Add.class) ,括号指定分组)
BindingResult可以获取到错误信息
@PostMapping(value = "/register")
public R register(@Valid @RequestBody UserVo vo, BindingResult bindingResult){}
public R register(@Validated(Add.class) @RequestBody UserVo vo, BindingResult bindingResult){}
? ?
参考
SpringBoot2.3.x-JSR303效验不显示
SpringBoot中JSR303校验失效 ? ?
自定义分组校验参考
Spring Boot 使用 JSR303 实现参数验证
|