spring启动,如何在列表中使用@Valid
问题内容:
我正在尝试对Spring Boot项目进行验证。因此,我将@NotNull
注释添加到实体字段。在控制器中,我像这样检查它:
@RequestMapping(value="", method = RequestMethod.POST)
public DataResponse add(@RequestBody @Valid Status status, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return new DataResponse(false, bindingResult.toString());
}
statusService.add(status);
return new DataResponse(true, "");
}
这可行。但是,当我使用input List<Status> statuses
使其无法工作时。
@RequestMapping(value="/bulk", method = RequestMethod.POST)
public List<DataResponse> bulkAdd(@RequestBody @Valid List<Status> statuses, BindingResult bindingResult) {
// some code here
}
基本上,我想要的是对请求正文列表中的每个Status对象应用类似于add方法中的验证检查。因此,发送方现在将确定哪些对象有故障,哪些对象无故障。
我如何以简单,快速的方式做到这一点?
问题答案:
我的直接建议是将List包装在另一个POJO bean中。并将其用作请求正文参数。
在您的示例中。
@RequestMapping(value="/bulk", method = RequestMethod.POST)
public List<DataResponse> bulkAdd(@RequestBody @Valid StatusList statusList, BindingResult bindingResult) {
// some code here
}
和StatusList.java将是
@Valid
private List<Status> statuses;
//Getter //Setter //Constructors
我没有尝试过。
更新: 此SO链接中 可接受的答案很好地解释了为什么Lists不支持bean验证。