Spring RequestMapping:将PathVariable与不同类型区分开来

时间:2013-09-24 17:13:08

标签: java spring spring-mvc

有没有办法让Spring通过路径变量的类型将请求映射到不同的方法,如果它们位于uri的相同位置?
例如,

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

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

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

1 个答案:

答案 0 :(得分:8)

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

@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]+}")