Spring 中 @Validated 嵌套校验问题
共计 758 个字符,预计需要花费 2 分钟才能阅读完成。
当使用 @Validated
进行参数校验时,如果方法参数是一个包含嵌套对象的复杂对象,@Validated 只会对顶层对象进行校验,而不会递归地对嵌套对象进行校验。例如:
public class Parent {
@NotNull(message ="parent name 不能为空")
private String name;
@NotNull
private Child child;
}
public class Child {
@NotNull(message ="child name 不能为空")
private String name;
}
@RestController
public class MyController {
@PostMapping("/test")
public void test(@Validated @RequestBody Parent parent) {
// some logic
}
}
此时传递如下参数依旧可以通过校验,并不会提示 child name 不能为空
。
{
"name": "parent",
"child": {
}
}
如果需要嵌套校验,需要在 child 字段上设置 @Valid
注解,即:
public class Parent {
@NotNull(message ="parent name 不能为空")
private String name;
@Valid
private Child child;
}
public class Child {
@NotNull(message ="child name 不能为空")
private String name;
}
@RestController
public class MyController {
@PostMapping("/test")
public void test(@Validated @RequestBody Parent parent) {
// some logic
}
}
Tips:清朝云网络工作室
阅读剩余
THE END