我有一个端点,在这里验证接收到的包含对象集合的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);
    }

}


我在Java 8中使用Spring Boot 1.5.9.RELEASE

最佳答案

我终于解决了。问题在于控制器类上的@Validated批注。使用这个注释弹簧,可以根据请求进行验证并抛出ConstraintViolationException。否则,稍后将触发验证,并且验证结果将按预期方式存储在BindingResult对象中

关于java - 尝试在Spring Controller中使用BindingResult时获取ConstraintViolationException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54784692/

10-09 07:17