我们有类型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等感到困惑。
谢谢!