当前位置: 首页 > 知识库问答 >
问题:

Spring控制器:尽管@valid和@size,但RequestParam未被验证

苏淇
2023-03-14
@GetMapping("/search")
    public List<Result> search(@RequestParam @Valid @NotNull @Size(min = 4) String query) {
        return searchService.search(query);
    }
"/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)注释被忽略?

共有1个答案

羿经武
2023-03-14

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

您可以将参数包装在类中,如

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

然后将控制器代码更改为

@GetMapping("/search")
public List<Result> search(@ModelAttribute @Valid SearchRequest searchRequest) {
    return searchService.search(searchRequest.getQuery());
}
 类似资料:
  • 我想验证请求参数。我已经浏览了很多博客并回答了问题,我也做了同样的事情。在控制器类上添加了@Validated。 控制器中的方法: 控制器建议 配置: 完成所有这些之后,现在我得到一个404错误。"状态":404,"错误":"未找到","消息":"没有可用的消息"

  • 是否有一种方法可以在@RequestParams上进行spring控制器单元测试以进行javax验证。 我在控制器中有一个get方法,它用@size验证请求参数的大小。 有没有办法模拟jUnit测试大小验证器?我想验证大小为 样本测试: @RunWith(MockitoJUnitRunner.class)公共类MyControllerTest{ } 我也试过SpringRunner,但似乎还是失败

  • 我的Spring MVC+Apache Tile2项目有以下配置。 我的问题是当我调用test2(没有参数)时,可以读取header.css。但是当调用test1时,我将得到header.css的404Not found。我注意到视图试图访问路径为 谢谢。

  • 我正在编写一个Spring Boot应用程序。我编写了一个简单的控制器,每当endpoint被命中时就会被调用,但它仍然返回状态404,而不是指定的返回值。 HelloController 现在,每当我调用时,我都会看到控制台日志,但是永远不会返回。邮递员输出: 应用JAVA

  • 在过去几个月里,我的应用程序的用户收到以下错误: 谷歌。谷歌。应用程序。请求。请求错误配额超出配额组“默认”,并限制消费者“project_number:*”的服务“calendar-json.googleapis.com”的“每天查询”。[403]错误[消息[配额超出配额组“默认”,并限制消费者“project_number”的服务“calendar-json.googleapis.com”的“

  • 我是新来的Spring应用程序。我试图创建小Spring应用程序,但我得到404错误消息。似乎控制器(indexController)没有开始调用。我累了调试,但它不在那里。 文件位置: /WebContent/WEB-INF/pages/index.html /WebContent/WEB-INF/HelloWebServlet。xml /WebContent/WEB-INF/web.xml H