Java Spring RequestMapping:使用不同类型区分PathVariable
如果请求位于uri的同一位置,有没有办法告诉Spring根据path变量的类型将请求映射到不同的方法?Java Spring RequestMapping:使用不同类型区分PathVariable,java,spring,spring-mvc,Java,Spring,Spring Mvc,如果请求位于uri的同一位置,有没有办法告诉Spring根据path变量的类型将请求映射到不同的方法? 比如说, @RequestMapping("/path/{foo}") @RequestMapping("/path/{id}") 如果foo应该是string,id是int,是否可以正确映射而不是查看请求URI?根据spring文档,可以使用regex作为路径变量,下面是文档中的示例: @RequestMapping("/spring-web/{symbolicName:[a-z-]
比如说,
@RequestMapping("/path/{foo}")
@RequestMapping("/path/{id}")
如果foo应该是string,id是int,是否可以正确映射而不是查看请求URI?根据spring文档,可以使用regex作为路径变量,下面是文档中的示例:
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}")
public void handle(@PathVariable String version, @PathVariable String extension) {
// ...
}
}
(示例取自)
从这一点来看,应该可以针对您的情况写下这样的内容:
@RequestMapping("/path/{foo:[a-z]+}")
@RequestMapping("/path/{id:[0-9]+}")
如果没有大量的配置,就不可能做到这一点。你能举个例子说明这样做的目的吗?人们想把一些api的格式改成第一种,而我已经有了第二种。这不值得这么麻烦。改为更改处理程序方法。使用
@RequestMapping(“/path/{foo:[A-Za-z]+}”)
,也可以获取字符串的大写字母。