弹簧控制器中的正则表达式
Posted
技术标签:
【中文标题】弹簧控制器中的正则表达式【英文标题】:Regex in spring controller 【发布时间】:2013-08-27 15:48:05 【问题描述】:我正在尝试构建一个请求过滤器,该过滤器只有在匹配字母 e 的模式时才会使用,然后是数字。但是我似乎无法让它工作。每次尝试使用正则表达式时,我都会收到 400 个错误。
如果我只使用以下内容,它会“工作”,但也会捕获没有我不想要的数字的映射。
@RequestMapping(value = "enumber",
method = RequestMethod.GET)
我尝试了以下组合。
@RequestMapping(value = "enumber",
params = "number:\\d+",
method = RequestMethod.GET)
@RequestMapping(value = "enumber:\d+",
method = RequestMethod.GET)
@RequestMapping(value = "/e^\\+?\\d+\$",
method = RequestMethod.GET)
@RequestMapping(value = "/^\\e+?\\d+\$",
method = RequestMethod.GET)
【问题讨论】:
【参考方案1】:根据the documentation,您必须使用varName:regex
之类的东西。甚至还有一个例子:
@RequestMapping("/spring-web/symbolicName:[a-z-]+-version:\\d\\.\\d\\.\\dextension:\\.[a-z]+")
public void handle(@PathVariable String version, @PathVariable String extension)
// ...
【讨论】:
【参考方案2】:你应该使用:
@RequestMapping("/enumber:\\d+)
注意\d
数字说明符之前的“转义斜杠”。
【讨论】:
我编辑了答案以删除对“解决方案”的引用,因为这样的陈述属于评论,而不是答案。但是,如果您能在答案中解释(编辑)所提供的代码对问题的作用,那就太好了。以上是关于弹簧控制器中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章