JSR 303 Bean验证:Constraint组合,包含每个组合约束的组

时间:2012-06-15 05:43:21

标签: java bean-validation

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

复合约束

@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
}

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

此致

Charlee Ch

1 个答案:

答案 0 :(得分:2)

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

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

  

主要约束注释中的组继承自   作文注释。组成注释上的任何组定义都将被忽略。同样,有效载荷来自   主要约束注释由组合注释继承。作曲中的任何有效载荷定义   注释被忽略。