有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java spring rest@RequestBody未使用@Valid进行验证

我正在学习java和SpringBoot,并尝试验证从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);
    }
}

我的理解是,资源参数在输入方法时应该是有效的。但是发布空的uri字段不会触发方法的验证。但是,它确实会在repository.save()中的hibernate验证中被触发

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


共 (1) 个答案

  1. # 1 楼答案

    您需要将^{}添加到控制器类中