JSR 303 Bean 验证:约束组合,每个组合约束都有组



我正在尝试使用约束组合,并希望为每个组合约束定义组,如以下示例所示: -

复合约束

@Target({
    ElementType.FIELD,
    ElementType.METHOD,
    ElementType.PARAMETER,
    ElementType.TYPE,
    ElementType.ANNOTATION_TYPE
})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DummyValid1(group = Group1.class)
@DummyValid2(group = Group2.class)
@Constraint(validatedBy = {})
public @interface DummyCompositeValid {
    String message() default "The bean is invalid.";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

数据 Bean

@DummyCompositeValid 
public class DummyBean {
    //Fields declaration, Setter and Getter
}

业务验证方法

this.validator.validate(dummyBean, Group1.class, Group2.class);

结果是虚拟豆尚未经过验证。我很困惑,因为当在没有复合约束的情况下直接定义该组时,该组运行良好,如下所示:-

数据 Bean

@DummyValid1(group = Group1.class)
@DummyValid2(group = Group2.class)
public class DummyBean {
    //Fields declaration, Setter and Getter
}

您能帮忙提供建议和进一步解释吗?非常感谢您提前提供的帮助。我期待很快收到您的来信。

问候

查理·

我已经向Hibernate验证器论坛提出了这个问题,并想通知我们结果如下: -

我想做的事情是不可能的。组合约束从主批注继承组。这是规范的一部分:

主约束注释中的组由 撰写批注。将忽略撰写批注上的任何组定义。同样,有效载荷来自 主约束批注由组合批注继承。合成上的任何有效负载定义 注释将被忽略。

最新更新