2014-02-06 83 views
0

我目前通過這種代碼驗證我的豆子:編程和聲明約束聲明

Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
validator.validateValue(class, propertyName, value); 

我的課是這樣的:

public static interface Primitive { 
    public Primitive setString(String s); 

    @NotNull 
    public String getString(); 
} 

這是工作的罰款至今。但是看起來,使用普通的hibernate驗證器從給定類獲取約束定義/映射並添加其他約束如here是不可能的。它看起來像約束映射是所有手動,我不喜歡待辦事項。另一方面,我用Validator.getConstraintsForClass(class)得到的BeanDescriptor似乎不適用於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(); 

回答