程序化和声明性约束声明

时间:2014-02-06 00:53:42

标签: java hibernate-validator

我目前正通过这种代码验证我的bean:

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所述的其他约束。看起来约束映射都是手动的,我不喜欢todo。另一方面,我使用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();

1 个答案:

答案 0 :(得分:1)

程序性约束API已经添加,这意味着您不需要建议的 getConstraints 。另请参阅Validator在线文档 - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-programmatic-api

  

默认情况下,通过流畅的API添加的约束可以添加到   通过标准配置功能配置的约束。   但也可以忽略注释和配置的XML   必要时的限制。