JSR303数据校验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSR303数据校验相关的知识,希望对你有一定的参考价值。

参考技术A

JSR303技术,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数据校验的主要内容,如果未能解决你的问题,请参考以下文章

JSR-303 数据校验学习

JSR303校验

springboot 整合 jsr-303 数据校验

SpringMVC中的 JSR 303 数据校验框架说明

SpringBoot--JSR303数据校验

SpringMVC 数据校验(JSR-303)