【发布时间】:2018-04-17 11:30:10
【问题描述】:
我有一个简单的spring 网络服务,它提供@PostMapping 并接受一个json 元素数组。
我希望 spring 自动验证列表中的每个元素。
@RestController
public class PersonServlet {
@PostMapping
public void insertPersons(@RequestBody @Valid List<PersonDto> array) {
}
}
public class PersonDto {
@NotBlank
private String firstname;
@NotBlank
private String lastname;
}
以下POST 请求应该失败,并出现firstname 缺失的验证错误:
[
{
"lastname": "john"
},
{
"firstname": "jane",
"lastname": "doe"
}
]
结果:请求未被拒绝。为什么?
旁注:如果我只是使用PersonDto 作为参数(不是列表),并发送一个只有一个人的json 发布请求,则验证有效并正确拒绝该请求。
所以总的来说,验证注释似乎有效,但只是在集合内时无效!
【问题讨论】:
-
你使用的是哪种注解@NotBlank?它是 Hibernate Validator 的注释吗?通过导入检查。
-
来自
org.hibernate.validator.constraints。 -
使用 Bean Validation 2.0,你可以试试
List<@Valid PersonDto> array。
标签: java spring web-services spring-mvc spring-web