8

有没有办法告诉Spring通过路径变量的类型将请求映射到不同的方法,如果它们在uri的同一个地方?
例如,

@RequestMapping("/path/{foo}")  

@RequestMapping("/path/{id}")

如果 foo 应该是字符串,id 是 int,是否可以正确映射而不是查看请求 URI?

4

1 回答 1

12

根据spring docs,可以将正则表达式用于路径变量,这是文档中的示例:

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

(示例取自http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-patterns

由此看来,应该可以针对您的情况编写如下内容:

@RequestMapping("/path/{foo:[a-z]+}")  

@RequestMapping("/path/{id:[0-9]+}")
于 2013-09-24T18:20:24.930 回答