在Spring MVC中使用@PathVariable绑定点分隔的字符串

时间:2012-01-10 13:01:21

标签: java spring spring-mvc

我的控制器中有以下方法:

@RequestMapping( value="/servers/{server}", method = RequestMethod.GET )
public @ResponseBody List<Application> getServerInformation( String server ) {
    logger.debug( "Request for server: " + server );
    ...
}

当我请求 /servers/test.myserver.com 时,绑定变量的值为 test.myserver 。通常,对于包含点分隔值的任何请求,最后一部分将从绑定变量的值中省略。 我使用的是Spring 3.0.4

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:9)

您可以使用Ant样式匹配模式。对于您的示例,您可以这样做:

@RequestMapping( value="/servers/{server:.*}", method = RequestMethod.GET )
public @ResponseBody List<Application> getServerInformation(
                          @PathVariable(value = "server") String server ) {
    logger.debug( "Request for server: " + server );
    ...
}

答案 1 :(得分:2)

您可能想要更改DefaultAnnotationHandlerMapping的useDefaultSuffixPattern。请查看How to change Spring MVC's behavior in handling url 'dot' character以获取有关此问题的讨论。