最近公司开发平台,要求有HibernateValidator验证,记录一下学习过程,主要理解一下Group校验
1、Meavn依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.10.Final</version>
</dependency>
2、
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 2, max = 14)
private String licensePlate;
@Min(2)
private int seatCount;
@AssertTrue(
message = "The car has to pass the vehicle inspection first",
groups = CarChecks.class
)
private boolean passedVehicleInspection;
}
//get/set
3、定义Group constraints,其实很简单就是定义一个接口
public interface CarChecks {
}
4、验证
public class GroupTest {
private static Validator validator;
@BeforeClass
public static void setUpValidator() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@Test
public void testCarNoCarChecks() {
Car car = new Car( "Morris", "DD-AB-123", 2 );
car.setPassedVehicleInspection(false);
Set<ConstraintViolation<Car>> constraintViolations = validator.validate( car);
assertEquals( 0, constraintViolations.size() );
}
@Test
public void testCarHasCarChecks() {
Car car = new Car( "Morris", "DD-AB-123", 2 );
car.setPassedVehicleInspection(false);//此处不写也无妨,boolean默认值就是false
Set<ConstraintViolation<Car>> constraintViolations = validator.validate( car,CarChecks.class);
assertEquals( 0, constraintViolations.size() );
}
}
5、分别得到的结果 上图
testCarNoCarChecks结果
testCarHasCarChecks 结果