@RequestMapping控制器和动态URL

我想使用Spring MVC @RequestMapping注释以这种方式将我的控制器附加到请求:

 @RequestMapping(method = RequestMethod.GET, value="/prod/{value:.+}/show") public String getProduct( @PathVariable("value") String value, ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) { ... } 

当请求将是

 (..)/prod/foo/show 

我的值变量将有foo

当请求将是

 (..)/prod/foo/bar/show 

我的value变量将有foo/bar

有没有办法做到这一点? 支持哪些@RequestMapping通配符?

您可以使用正则表达式。 尽管你可能不得不做一些逃避。 看看这张jira票 。

如果我理解你,你需要从视图传递给控制器​​一个字符串,例如,包含一些狂野的字符。 当您在控制器上收到此字符串时,您将在野性字符之前找到值。

这种行为是有道理的,因为你不能添加“。” 或“/”,“#”进入url。 如果您使用的是freemarker,可以使用?url:http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_url

此外,您可以在此处看到“。”,点: http : //www.december.com/html/spec/esccodes.html没有ASCIIhex等效代码,因此您需要从代码中更改它从视图传递到控制器的类似“#”的东西。