为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

墨色风雨 2022-06-30 10:30:08
我有一个端点,在那里我验证收到的包含对象集合的 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
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

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



查看完整回答
反对 回复 2022-06-30
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

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



查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信