基于封闭类类型的条件JSR-303验证

时间:2015-10-27 13:55:46

标签: java spring validation

如何根据包含给定bean的类更改验证规则? 例如:

public class ParentA {
    @Valid
    private Child c;
}
public class ParentB {
    @Valid
    private Child c;
}
public class Child {
    @NotNull // when in ParentA
    @Null // when in ParentB
    private String name;
}

有验证组,但是,在这种情况下,我不知道如何应用它们。我可以指定以下内容:如果验证ParentA然后对其字段应用GroupA,希望通过一些注释并且没有instanceof?我真的不想创建具有不同验证注释的两种类型ChildA和ChildB。我正在使用spring 4构建REST服务。感谢您提供任何反馈。

1 个答案:

答案 0 :(得分:0)

试试此代码

public class ParentA {
    @Valid
    @ConvertGroup(from=Default.class, to=ParentA.class)
    private Child c;
}

public class ParentB {
    @Valid
    @ConvertGroup(from=Default.class, to=ParentB.class)
    private Child c;
}

public class Child {
    @NotNull(groups=ParentA.class)
    @Null(groups=ParentB.class)
    private String name;
}

您可以在hibernate validator reference guide

中找到更多信息和其他示例