JSR303数据校验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSR303数据校验相关的知识,希望对你有一定的参考价值。
参考技术AJSR303技术,JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint,在springboot中使用也比较简便。
在 javax.validation.constraints 包下有许多的注解:
常用的校验注解补充:
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty 检查约束元素是否为NULL或者是EMPTY. @Length 被检查的字符串长度是否在指定的范围内 @CreditCardNumber 信用卡验证 @Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。 @URL 验证是否是一个url地址
注意: 一个字段可以标注多个校验注解。
如果只标注了注解字段,不启用@valid的是不生效的。
对于程序可能有很多的校验注解,可能会出现多个校验错误,我们可以定义一个统一的异常处理类,帮我们捕捉校验错误并返回提示信息,这里可以利用Spring的ControllerAdvice技术。
对于校验可能会出现的异常,我们将其抛出,不予捕捉感知,都交给我们的统一异常处理类处理,返回提示信息。
对于不同的操作,字段校验的规则和数量可能是不同的,所以我们将校验规则分组,对于不同的操作进行不同的校验组,使用groups属性。
1.想要使用分组校验功能,根据文档我们首先编写不同的校验组接口,只编写空接口,用来表示就可以了:
2.编写好分组接口,对于不同的检验规则,标注不同的分组标识:
3.在controller方法上标注不同的分组校验,使用@Validated注解:
@Validated(AddGroup.class) :启用不同的分组校验规则。
注意: 在使用分组校验的情况下,对于没有标注分组的校验规则,默认是不生效的,只有标注了分组的校验规则才会生效。
1.编写一个自定义的校验注解
导入依赖:
编写自定义校验注解
用来验证自定义的字段值,非0即1。
2.编写一个自定义的校验器
3.关联自定义的校验器和自定义的校验注解
在自定义的校验注解中添加自己的校验器,就关联好了,一个校验注解可以指定多个不同类型的校验器,适配不同类型的校验。关联完成就可以使用了。
4.使用
测试:
save方法传参: showStatus: 3 返回:
自定义校验注解生效。
以上是关于JSR303数据校验的主要内容,如果未能解决你的问题,请参考以下文章