【问题标题】:Regex in spring controller弹簧控制器中的正则表达式
【发布时间】:2013-08-27 15:48:05
【问题描述】:

我正在尝试构建一个请求过滤器,该过滤器只有在匹配字母 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)

【问题讨论】:

    标签: java regex spring spring-mvc routes


    【解决方案1】:

    根据the documentation,您必须使用{varName:regex} 之类的东西。甚至还有一个例子:

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

    【讨论】:

      【解决方案2】:

      你应该使用:

       @RequestMapping("/e{number:\\d+})
      

      注意\d 数字说明符之前的“转义斜杠”。

      【讨论】:

      • 我编辑了答案以删除对“解决方案”的引用,因为这样的陈述属于评论,而不是答案。但是,如果您能在答案中解释(编辑)所提供的代码对问题的作用,那就太好了。
      猜你喜欢
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2023-03-09
      • 2021-09-18
      • 2019-07-10
      相关资源
      最近更新 更多