java @大小在SpringBoot控制器中不起作用

oiopk7p5  于 2022-12-21  发布在  Java
关注(0)|答案(3)|浏览(212)

我正在尝试验证传入我的rest端点的列表大小。

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

看起来不起作用。不管我在端点中发送的文档数量是多少,我都可以获得200个。
有人知道怎么让它工作吗?

qrjkbowd

qrjkbowd1#

尽量不要像这样使用请求主体..最好创建一个pojo或DTO,将list作为其示例变量,并使用@Valid注解和bindingResult来验证任何实体。

2izufjch

2izufjch2#

由于您正在更新资源,因此需要将其设置为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
    );
}
brc7rcf0

brc7rcf03#

我遇到了同样的问题,并通过将@Validated添加到控制器(类)本身来修复它

相关问题