如何在 Spring 的 @RestController 中验证参数对象中的 url 参数包

How to validate url parameters bundle in parameter object in Spring's @RestController

我有一个标准的@RestController方法。为了避免大量的方法参数,我引入了一个参数对象(MyMapQuery):

@RestController
public class MyController {
  @RequestMapping(value = "/api/search")
  @ResponseBody
  public SearchResponse search(MyMapQuery query) {
    [...]
  }

MyMapQuery 是一个带有 setter 和 getter 的标准 java bean,所以当我传递多个 url 参数时 http://.../api/search?west=1&east=2&north=20&south=0,它们被正确填充。

如何对某些 url 参数实施必需的验证?

Spring 自动响应 400(错误请求),当参数如下映射时,但在 MyMapQuery.

的情况下不进行验证
public SearchResponse search(@RequestParam BigDecimal east, @RequestParam BigDecimal west, ...) {

只需使用

 public SearchResponse search(@Valid MyMapQuery query) {

并将必要的 bean 验证注释添加到 MyMapQuery 的字段。