当顶级已验证对象是通用集合类型时,如何验证集合中的对象

时间:2018-10-24 14:59:26

标签: spring-boot bean-validation

我们有类型A,它汇总了类型B。在验证A时,我们要验证所有B。很简单:

@Data
public class A {
    @NotNull
    private String a;

    @Data
    @Valid
    private List<B> bs;

    public static class B {
        @NotNull
        private String b ;
    }    
}

但是说,我们需要验证List。从理论上讲,这可以通过创建拥有类来解决,但是仅仅为了触发验证而实例化对象是不可接受的解决方案,例如:

public void receive(@Valid List<A> messageList) {

在控制器/侦听器中,这甚至都不容易(我认为)。这里的问题是,@ Valid被错误地重用于〜@ ExamineChildren的含义。给定List确实是有效的,因为它没有定义任何约束,但这不是我们想要的。

除了注入Validator和手动触发验证之外,是否有解决此问题的方法?即使没有,您实际上是手工完成(这就是我现在要做的),您能否展示您的方法?我会对您如何处理ConstraintViolations等感到困惑。

谢谢!

0 个答案:

没有答案