2

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

复合约束

@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);

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

数据 bean

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

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

问候,

查理

4

1 回答 1

2

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

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

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

于 2012-06-18T12:09:39.110 回答