使用Hibernate验证器验证一个属性

时间:2016-04-20 23:55:33

标签: java validation constraints hibernate-validator

晚上好,我尝试使用Hibernate Validator,在以下场景中:

public class Car {

@NotNull
private String manufacturer;

@NotNull
@Size(min = 2, max = 14)
private String licensePlate;

@Min(2)
private int seatCount;

//setters and getters....
}

我正在尝试验证其属性如下:

public class CarMain {

public static Validator validator;
public static void main(String[] args) {
    ValidatorFactory factory = Validation. buildDefaultValidatorFactory() ;
    validator = factory. getValidator();
    Car car = new Car(null,null,0);
    Set<ConstraintViolation<Car>> st= validator.validate(car);
    while(st.iterator.hasNext()){
        ConstraintViolation<Car> cv = st.iterator.next();
        System.out.println("Value: ("+cv.getInvalidValue()+") -->"+cv.getMessage());
        System.out.println("Attribute: "+cv.getPropertyPath());
    }
}

此处验证整个实体,并显示带有验证消息和属性路径的无效值。

我的问题是:&#34;是否可以使用Hibernate Validator一次只验证一个属性?就像我不必使用整个对象来验证它一样。

1 个答案:

答案 0 :(得分:0)

@EnableAutoConfiguration接口还定义了一个Validator方法,您可以在其中明确指定要验证的属性。请注意,您仍然需要对象实例,并且您需要知道要验证的属性。例如,将Bean Validation集成到JSF中使用此方法。在您的案例中使用它是否有意义取决于您的使用案例?你为什么不想验证整个对象?

BTW,还有[Validator.validateProperty][1],它不需要实际的bean实例。