spring控制器中的正则表达式


问题内容

我正在尝试建立一个请求过滤器,该过滤器仅在与字母e然后是数字的模式匹配时才会使用。但是我似乎无法使其正常工作。每次尝试使用正则表达式时,我都会不断收到400个错误。

如果我仅使用以下内容,则它“有效”,但还会捕获没有我不需要的数字的映射。

@RequestMapping(value = "e{number}",
            method = RequestMethod.GET)

我尝试了以下组合。

@RequestMapping(value = "e{number}",
            params = "number:\\d+",
            method = RequestMethod.GET)

@RequestMapping(value = "e{number:\d+}",
            method = RequestMethod.GET)

@RequestMapping(value = "/e{^\\+?\\d+\$}",
            method = RequestMethod.GET)

@RequestMapping(value = "/{^\\e+?\\d+\$}",
            method = RequestMethod.GET)

问题答案:

根据文档,您必须使用{varName:regex}。甚至有一个例子:

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}")
  public void handle(@PathVariable String version, @PathVariable String extension) {
    // ...
  }
}