JSR 303 - 组合约束

时间:2010-12-22 20:27:00

标签: java hibernate-validator bean-validation

如何在ConstraintValidator内执行ConstraintValidator

我有一个自定义@NotEmpty并且每种类型都有一个自定义ConstraintValidator,并且工作正常。

现在我想创建一个类级别约束,使用我已经拥有的那些自定义ConstraintValidator来检查至少一个指定字段是否为空。约束部分(@ClassNotEmpty)已完成,但问题是ConstraintValidator实现。如何获取给定约束的ConstraintValidator实例?即。

isValid(Object value, ConstraintValidatorContext constraintValidatorContext)  {
    String[] fieldValues = getFieldValues(value, this.classNotEmpty.fieldNames());

    for (String fieldValue : fieldValues) {
        <What do I put here?>.isValid(fieldValue, constraintValidatorContext);
    }
}

有没有办法在不将验证例程提升到辅助类的情况下执行此操作?

BTW,我正在使用Spring和Hibernate Validator。

2 个答案:

答案 0 :(得分:1)

在进一步研究之后,似乎没有已知的解决方案来获得给定约束的ConstraintValidator实例,可移植或不可移植。辅助类似乎是唯一的方法。

答案 1 :(得分:0)

我没有在我面前的信息,但我记得读过一些由其他验证器组成的验证器。因此,如果您有两个验证器A和B.您可以定义第三个'C',它由另外两个组成。通过doco狩猎,你应该找到它。

刚刚进行了搜索,请阅读:http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-compound

这可能就是你要找的东西。