gpt4 book ai didi

Spring Controller : RequestParam not validated despite @Valid and @Size

转载 作者:行者123 更新时间:2023-12-04 00:29:16 26 4
gpt4 key购买 nike

我有一个简单的 Controller 方法:

@GetMapping("/search")
public List<Result> search(@RequestParam @Valid @NotNull @Size(min = 4) String query) {
return searchService.search(query);
}

当我省略“查询”参数时,正如预期的那样,我收到 400 Bad Request。

使用这些查询参数测试方法不起作用。

除了最后一个测试之外,所有测试都应该返回“400 Bad Request”。
"/search"             --> actual 400 Bad Request, test passes
"/search?query=" --> actual 200 Ok, expected 400 because @Size(min=4)
"/search?query=a" --> actual 200 Ok, expected 400 because @Size(min=4)
"/search?query=ab" --> actual 200 Ok, expected 400 because @Size(min=4)
"/search?query=abc" --> actual 200 Ok, expected 400 because @Size(min=4)
"/search?query=abcd" --> actual 200 Ok, test passes

为什么 @Size(min=4) 注释被忽略?

最佳答案

验证 RequestParameters 不像开箱即用的那样工作。

您可以将参数包装在一个类中

class SearchRequest {
@Size(min=4)
@NotNull
private String query;
...
}

然后将您的 Controller 代码更改为
@GetMapping("/search")
public List<Result> search(@ModelAttribute @Valid SearchRequest searchRequest) {
return searchService.search(searchRequest.getQuery());
}

现在这是一种方法,你想要的可能可以使用类上的@Validated 注释来实现,但我对此一无所知,但似乎在这里涵盖: https://sdqali.in/blog/2015/12/04/validating-requestparams-and-pathvariables-in-spring-mvc/

关于 Spring Controller : RequestParam not validated despite @Valid and @Size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com