@Size无法在SpringBoot控制器

时间:2018-03-02 19:08:46

标签: java validation spring-boot

我正在尝试验证在其余端点中传递的列表的大小。

@PostMapping("/test")
public ResponseEntity<String> test(@RequestBody @Size(min = 2) List<Document> docs){
        return new ResponseEntity<>(
                "Tested",
                HttpStatus.OK
        );
    }

看起来它不起作用。无论我在端点发送的文档数量是多少都可以获得200 OK。

有人知道如何让它运作起来吗?

2 个答案:

答案 0 :(得分:0)

因为您正在更新资源

,所以它必须是PUT
@PutMapping("/test")
public ResponseEntity<String> update(@Validated @RequestBody @Size(min = 2) List<Document> docs) {
    return new ResponseEntity<>(
            "Tested",
            HttpStatus.OK
    );
}

public class DocumentRequestDto {

    @Valid
    @Size(min = 2)
    private List<Document> documents;

    public List<Document> getDocuments() {
        return documents;
    }
    public void setDocuments(List<Document> documents) {
        this.documents = documents;
    }
}

和控制器

@PutMapping("/test")
public ResponseEntity<String> update(@RequestBody DocumentRequestDto requestDto) {
    return new ResponseEntity<>(
            "Tested",
            HttpStatus.OK
    );
}

答案 1 :(得分:0)

尽量不要使用像这样的请求体...更好地使用列表作为其实例变量的pojo或DTO,并使用@Valid注释和bindingResult来验证任何实体。 这种方法不具备可扩展性。