猿问

尝试在 Spring Controller 中使用 BindingResult 时出现

我有一个端点,在那里我验证收到的包含对象集合的 json 文档。当我想将其他对象存储在数据库中时,我只想记录这些未通过验证的对象。在这种情况下,控制器应该返回 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


墨色风雨
浏览 124回答 2
2回答

jeck猫

我终于设法解决了。问题在于控制器类上的 @Validated 注释。使用这个注解 spring 对请求进行验证并抛出 ConstraintViolationException。否则,稍后会触发验证,并将结果按预期存储在 BindingResult 对象中

扬帆大鱼

您能否添加带有注释的模型类?请记住,如果您在Document类中有任何字段是您自定义的类并且您希望它也被验证,那么您也必须使用&nbsp;@Valid注释来装饰这些字段。
随时随地看视频慕课网APP

相关分类

Java
我要回答