我有一个端点,在这里我验证接收到的包含对象集合的json文档。我只想记录这些未通过验证的对象,而其他对象我想存储在db中。在这种情况下,控制器应返回200 OK。我试图为此目的使用BindingResult对象。不幸的是,我总是收到ConstraintViolationException。似乎它在进入方法并引发异常之前对其进行了验证。如何强制它使用BindingResult对象?
@RestController
@Validated
@RequestMapping(path = "/test")
class TestController {
@PostMapping(consumes = APPLICATION_JSON_VALUE)
public ResponseEntity<Void> addObjects(@RequestBody @Valid List<Document> objects, BindingResult bindingResult) {
if(bindingResult.hasErrors()){
}
return new ResponseEntity<Void>(HttpStatus.OK);
}
}
我正在将Spring Boot 1.5.9.RELEASE与Java 8配合使用
答案 0 :(得分:0)
您能添加带有注释的模型类吗?
请记住,如果您在Document
类中有任何字段是您自定义定义的类,并且还希望对其进行验证,那么您也必须用@Valid
注释修饰这些字段。
答案 1 :(得分:0)
我终于设法解决了。问题在于控制器类上的@Validated批注。使用这个注释弹簧,可以根据请求进行验证,并抛出ConstraintViolationException。否则,验证将在稍后触发,其结果将按预期方式存储在BindingResult对象中