什么是JSR303 参数校验?
JSR303 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,就是类里面的字段上面,就可以在需要校验的时候进行校验了。
怎么使用JSR303?
导入 validation 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
常用注解
@NotNull 注解元素必须是非空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否小于等于最大指定整数值
@Min 验证值是否大于等于最小指定整数值
@Pattern 验证字符串是否匹配指定的正则表达式
@Size 验证元素大小是否在指定范围内
@DecimalMax 验证值是否小于等于最大指定小数值
@DecimalMin 验证值是否大于等于最小指定小数值
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
代码示例–登录校验
1、在登录的封装对象里面的需要校验的字段上添加校验注解
改一下校验信息,容易辨认
2、需要在controller接收数据的封装的对象前面贴上 @Valid 注解,才能帮我们进行校验,底层是通过反射机制来拿到参数中的值的,然后再进行数据的校验。
@Valid 注解通常用于对象属性字段的规则检测
这个是调用登录方法的接口
启动项目,输入错误的手机号,就会被校验到失败,然后提示信息现在还是只能在控制台看到。
校验走的是 BindException 这个异常
那我们就得针对这个BindException进行异常处理
先定义一个参数异常的常量
这图是MemberCodeMsg这个类
从增强控制器类里面,捕捉到BindException异常,然后去调用filterArg方法,去灵活的设置异常信息
成功示例
和这里的注解里面的异常信息对应上了
点击登录用,看是先走传统校验方法,还是先走 注解的 jsr303 校验方法
因为已经在 jsr303 校验过了,出了异常,直接报异常,就不会往下走了