@Valid(javax.validation.Valid) 对于list的类型是不递归的
@Valid (javax.validation.Valid) is not recursive for the type of list
控制器:
@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;
}
这会触发 Parent.name 的 @NotNull
,但不会检查 Child.name。
如何让它触发。我试过 List<@Valid Child> children;
也用 @Valid
注释对 Child class 进行注释,但不起作用。请帮忙。
parent = { "name": null }
失败。名称不能为空。
child = { "name": null }
有效。
你试过这样吗:
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
@Valid
List<Child> children;
}
尝试添加,
class Parent {
@NotNull
private String name;
@NotNull
@Valid
List<Child> children;
}
如果你想验证 child 那么你必须对属性本身提及 @Valid
Parent Class
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;
}
Child class
class Child {
@NotNull
private String name;
}
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;
}
使用Bean Validation 2.0和Hibernate Validator6.x,推荐使用:
class Parent {
@NotNull
private String name;
List<@Valid Child> children;
}
我们支持 @Valid
和容器元素中的约束。
但是,其他人的建议应该可行。
控制器:
@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;
}
这会触发 Parent.name 的 @NotNull
,但不会检查 Child.name。
如何让它触发。我试过 List<@Valid Child> children;
也用 @Valid
注释对 Child class 进行注释,但不起作用。请帮忙。
parent = { "name": null }
失败。名称不能为空。
child = { "name": null }
有效。
你试过这样吗:
class Parent {
@NotNull // javax.validation.constraints.NotNull
private String name;
@Valid
List<Child> children;
}
尝试添加,
class Parent {
@NotNull
private String name;
@NotNull
@Valid
List<Child> children;
}
如果你想验证 child 那么你必须对属性本身提及 @Valid
Parent Class
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;
}
Child class
class Child {
@NotNull
private String name;
}
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;
}
使用Bean Validation 2.0和Hibernate Validator6.x,推荐使用:
class Parent {
@NotNull
private String name;
List<@Valid Child> children;
}
我们支持 @Valid
和容器元素中的约束。
但是,其他人的建议应该可行。