我有一个简单的 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
post 请求,验证工作并正确拒绝请求。
所以一般来说,验证注解似乎有效,但只是在集合内部时无效!
最佳答案
解决方法:以下触发列表验证:
public class PersonDtoList extends ArrayList<PersonDto> {
@Valid
public List<PersonDto> getList() {
return this;
}
}
public void insertPersons(@RequestBody @Valid PersonDtoList array) {
}
关于java - 如何验证 spring-mvc POST webservice 中的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876901/