问题描述
我正在尝试验证从另一个模型继承的模型,并且该父模型具有 @NotBlank 批注以验证参数。但是,此验证在接受子类对象列表的控制器中被绕过了。
public abstract class A {
@NotBlank
private String name;
}
public class B extends A {
private String type;
}
@PostMapping(consumes= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity saveRoles(@Valid @RequestBody List<B> roles){
// ideally it should not land here if request has blank name. But it seems to land here.
// logic
}
请求正文-
[
{
"name": "","type": "system"
}
]
解决方法
您试图验证集合本身,而不是集合元素。试试这个:
@PostMapping(consumes= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity saveRoles(@RequestBody List<@Valid B> roles){
}