2014-02-06 2 views
0

Я в настоящее время проверка моих бобов через такой код: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(); 

ответ

1

Программное ограничение API уже присадка, это означает, что вам не нужен Предлагаемый getConstraints. Смотрите также Validator интернет-документы - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-programmatic-api

По умолчанию ограничения, добавленное с помощью текучего API является добавкой к ограничениям, сконфигурированных с помощью стандартных возможностей конфигурации. Но также можно игнорировать аннотацию, а XML - , где необходимо.

Смежные вопросы