是否可以使用Hibernate验证器API在带有注释的字段中存储经过验证的对象?例如,我想通过调用Java方法来验证Email
地址,而不是在Java bean属性上放置@Email
注释。
答案 0 :(得分:9)
是的,有可能。尝试类似的东西,
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Car car = new Car(null);
Set<ConstraintViolation<Car>> constraintViolations = validator.validateProperty(car, "manufacturer");
看看here。
(编辑必须是6个字符)
答案 1 :(得分:3)
zinan.yumaks解决方案,他们正在创建一个您不需要的虚拟Car
对象,这不是正确的方法。有一个更好的解决方案,validateValue
方法:
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
String emailAddress = "...";
Set<ConstraintViolation<User>> constraintViolations =
validator.validateValue(User.class, "email", emailAddress);
来自文档:
验证对类
propertyName
的名为beanType
的属性的所有约束,属性值为value
。