spring-rest@RequestBody不使用@Valid进行验证



我正在学习java和spring-boot,并试图验证从json绑定的控制器参数。

我有一个简单的实体:

@Getter
@Setter
class Resource {
@NotBlank
String uri;
}

我想通过以下控制器持久化:

@BasePathAwareController
public class JavaResourcePostController {
private final ResourceRepository repository;
public JavaResourcePostController(ResourceRepository repository) {
this.repository = repository;
}
@RequestMapping(value = "/resources", method = RequestMethod.POST)
ResponseEntity<Resource> create(
@Valid @RequestBody Resource resource
) {
repository.save(resource);
return ResponseEntity.ok(resource);
}
}

我的理解是,在输入方法时,resource参数应该是有效的。但是发布一个空的uri字段并不会触发该方法的验证。然而,它确实在repository.save()的休眠验证中被触发

为什么参数上的@Valid注释不能确保我得到一个经过验证的实体?

您需要将@Validated添加到控制器类中。

相关内容

  • 没有找到相关文章

最新更新