控制器:
@RequestMapping(...)
public void foo(@Valid Parent p){
}
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
List<Child> children;
}
class Child {
@NotNull
private String name;
}
这将触发@NotNull
的Parent.name,但不检查Child.name。
如何使其触发。我尝试了List<@Valid Child> children;
并用@Valid
注释子类,但不起作用。请帮忙。
parent = { "name": null }
失败。名称不能为空。
child = { "name": null }
有效。
答案 0 :(得分:2)
尝试添加,
class Parent {
@NotNull
private String name;
@NotNull
@Valid
List<Child> children;
}
答案 1 :(得分:1)
您是否尝试过这种方法?
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
@Valid
List<Child> children;
}
答案 2 :(得分:0)
如果要验证孩子,则必须在属性本身上提及@Valid
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
@NotNull // Not necessary if it's okay for children to be null
@Valid // javax.validation.Valid
privateList<Child> children;
}
class Child {
@NotNull
private String name;
}
答案 3 :(得分:0)
annotate
中的 Parent
和@Valid
一起添加到@NotEmpty
中,并添加@NotBlank
或@NotNull
或Child
。 Spring会很好地验证它。
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
@Valid
List<Child> children;
}
class Child {
@NotNull
private String name;
}
答案 4 :(得分:0)
对于Bean Validation 2.0和Hibernate Validator 6.x,建议使用:
class Parent {
@NotNull
private String name;
List<@Valid Child> children;
}
我们在容器元素中支持@Valid
和约束。
但是,其他人的建议应该起作用。