Я в настоящее время проверка моих бобов через такой код:Programmatic и декларативное заявление Constraint
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
validator.validateValue(class, propertyName, value);
Мои классы выглядеть следующим образом:
public static interface Primitive {
public Primitive setString(String s);
@NotNull
public String getString();
}
Это работает нормально до сих пор. Но кажется, что с помощью простого валидатора спящего режима невозможно получить определения/сопоставление ограничений из данного класса и добавить дополнительные ограничения, как описано here. Похоже, что сопоставление ограничений - это все руководство, которое мне не нравится делать. С другой стороны, BeanDescriptor, который я получаю с Validator.getConstraintsForClass(class)
, кажется, не может использоваться с ConstraintMapping.
Это то, что я имею в виде:
ConstraintMapping mapping = new ConstraintMapping();
mapping
.type(Order.class).getConstraints()/*reads the constraints declared on the Bean*/
.property("customer", ElementType.FIELD)/*add additional constraints*/
.constraint(NotNullDef.class);
Validator validator = Validation
.byProvider(HibernateValidator.class)
.configure()
.addMapping(mapping)
.buildValidatorFactory()
.getValidator();