我想分两步执行我的实体的验证。虽然我在保存到数据库之前使用 defaultValidatorFactory 来验证实体的所有字段,但我想在前面的步骤中对实体执行部分验证。但我找不到配置我的验证器(或 validatorFactory)的方法。
假设我有以下课程:
public class Car {
@NotNull
private String manufacturer;
@AssertTrue
private boolean isRegistered;
public Car(String manufacturer, boolean isRegistered) {
super();
this.manufacturer = manufacturer;
this.isRegistered = isRegistered;
}
}
当我对实体进行完整验证时,我使用给定的代码:
Validator validator = validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Car>> errors = validator.validate(car);
这工作正常并验证注释 NotNull 和 AssertTrue。
现在,我想执行部分验证。我的意思是通过部分验证,我只想验证例如 NotNull 约束并忽略其他注释。
有没有办法获取使用自定义验证器限制列表的 Validator 或 ValidatorFactory ?
您可以找到很多东西来创建您自己的约束/约束验证器。就我而言,我只想验证一些约束。
也许我可以创建一个自定义 ConstraintValidatorFactory 并将其注入到验证上下文中?我发现我们可以用下面的代码重新配置工厂的上下文,但我不知道如何处理。
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
validatorFactory.usingContext().constraintValidatorFactory(myCustomFactory);
此刻,我迷路了。有人已经做过类似的事情了吗?你知道我该怎么做吗?谢谢你的时间。
我正在使用 Java 8 和 Hibernate Validator 6.0.14。