@RequestMapping控制器和动态URL

时间:2011-05-04 06:58:53

标签: java spring-mvc

我想使用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

我的值变量将有foo/bar

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

此行为有意义,因为您无法添加“。”或“/”,“#”进入网址。 如果您使用的是freemarker,可以使用?url:http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_url

此外,您可以在此处看到“。”,点:http://www.december.com/html/spec/esccodes.html 没有ASCII十六进制等效代码,因此您需要将其从代码更改为类似“#”的内容,从视图传递到控制器。