首页 > 解决方案 > Java Bean Validation:如何将验证与验证组级联?

问题描述

我有一个类级别的注释,我someField在检查另一个类型的字段之前使用它来检查Bar

@SomeClassValidation
class Foo {
    String someField;

    @Valid
    Bar someBar;
}

的实现ConstraintValidator<SomeClassValidation, Foo>看起来像:

if(someField == someExpectedValue) {
    return someBar != null;
}

当初始检查@SomeClassValidation通过时,我还需要验证Bar类中的字段,如下所示:

class Bar {
    @NotEmpty
    @Size(min=2, max=2)
    String fieldA;

    @NotEmpty
    @Size(min=3, max=10)
    String fieldB;
}

另一个类似问题的答案之后,我认为我需要使用验证分组,其中BarValidationGroup是我用于Bar类中字段的标记接口。

@SomeClassValidation
@GroupSequence({Foo.class, BarValidationGroup.class})
class Foo {
    String someField;

    @Valid
    Bar someBar;
}

class Bar {
    @NotEmpty
    @Size(min=2, max=2, groups = BarValidationGroup.class)
    String fieldA;

    @NotEmpty
    @Size(min=3, max=10, groups = BarValidationGroup.class)
    String fieldB;
}

第一级验证 ( @SomeClassValidation) 会触发,但Bar不会触发。我究竟做错了什么?

标签: javabean-validation

解决方案


推荐阅读