javax.validation校验整理[多字段二选一效验]
一、 简介
Javax.Validation是Java EE的一个规范,旨在提供一套通用的API,对Java Bean的属性值进行基础校验和验证。Javax.Validation支持约束验证注解,例如@NotNull和@Size,这些注解可以应用到属性或方法上,自动触发验证过程。
1.注解@Valid与@Validated区别
@Valid与@Validated都是用来校验接收参数的。
@Valid是使用Hibernate validation的时候使用
@Validated是只用Spring Validator校验机制使用
说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现。
@Validated与@Valid区别:
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上,不支持嵌套检测
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上,支持嵌套检测
注意:SpringBoot使用@Valid注解需要引入如下POM
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.多字段二选一效验
/**
* 自定义的效验规则,具体参考属性级别约束,写一个get方法,自定义效验规则,然后返回值必须是符合要求的,不然就直接返回错误信息
* @return
*/
@AssertTrue(message = "textContent与attachments必填其一")
public Boolean getTextContentAndAttachmentsValid(){
return !StringUtils.isBlank(this.textContent) || !CollectionUtils.isEmpty(this.attachments);
}