今天我正在研究可从 STS 仪表板下载的 Spring MVC 展示
对于Spring 3.2版本引入的新注解@MatrixVariable,以及URI路径中Matrix变量的使用,我有些疑惑。
在我的 home.jsp 视图中,我有以下链接:
<a id="matrixVar" class="textLink" href="<c:url value="/data/matrixvars;foo=bar/simple" />">Matrix variable</a>
在这里阅读有关@MatrixVariable注释的官方文档:http: //static.springsource.org/spring-framework/docs/3.2.0.M2/reference/html/mvc.html#mvc-ann-matrix-variables
我已经了解以下内容:
1) 矩阵变量是一对 2) 我可以将这些变量放在任何 URI 路径段中
所以我对之前的链接有些疑惑:
单击上一个链接时调用的 URI 是什么?
是 /spring-mvc-showcase/data/matrixvars/simple 吗?!?!(使用 spring-mvc-showcase 只是应用程序名称)
如果我将“foo”矩阵变量放在其他位置,它会无动于衷吗?
例如,如果我以这种方式放置“foo”变量:
“/data;foo=bar/matrixvars/simple”
或以这种方式:
“/data/matrixvars/simple;foo=bar”
有同样的意思吗?
好的,现在这是处理通过单击链接生成的 HTTP 请求的控制器方法:
@RequestMapping(value="{path}/simple", method=RequestMethod.GET)
public @ResponseBody String withMatrixVariable(@PathVariable String path, @MatrixVariable String foo) {
return "Obtained matrix variable 'foo=" + foo + "' from path segment '" + path + "'";
}
此方法使用 URI 模板模式来加入 URI 的特定位置。
因此,如果我的 URI 是data/matrixvars/simple并且因为我的整个类都由@RequestMapping("/data")注释注释并且我的控制器方法由以下注释:@RequestMapping(value="{path}/simple", method= RequestMethod.GET)这意味着以下的事情?
路径 URI 模板变量与第二个 URI 位置相关(在当前 URI 中是 matrixvars),因此此方法也可以处理 URI,例如:
/spring-mvc-showcase/data/SOMETHING/simple
这样对吗?
非常感谢你
安德烈亚