最近在做的后端业务中有用到@Valid进行表单验证的需求
所以研究了一下
但是在Controller接口的RequestBody中加上@Valid无论如何都没有办法校验
Controller
:
@PostMapping("/reg")
public ResultBean reg(
@Valid @RequestBody RegBO regBO
){
//TODO do something.....
return ResultBean.success();
}
RegBO
:
@Data
public class RegBO implements Serializable{
private static final long serialVersionUID = -8836644929813047906L;
@Size(min=5,max=32,message = "用户名长度在5-32个字符之间哦")
private String username;
@Pattern(regexp = "^[a-zA-Z0-9_]{6,32}$",message = "密码长度在6-32个字符之间哦,包含大小写字母数字和下划线")
private String password;
}
很简单,但是没有效果,百度了很久依然没有解决方案。。。
然后尝试Google了一下
在第一条Stack Overflow的回答下找到了:
https://stackoverflow.com/questions/48614773/spring-boot-validation-annotations-valid-and-notblank-not-working
我的Springboot版本也是2.3.0
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
然后就解决了
原因
因为在早期版本的Springboot中 javax.validation
是可以单独使用的,不仅提供了JSR规范,也提供了实现,所以可以用。
而在2.3.0中并没有提供实现,所以需要加入上面的依赖来保证valid可以工作
冶心·练体·得技