有关@MatrixVariable注释的一些信息,请参见Spring 3.2

时间:2012-12-13 22:04:23

标签: java spring spring-mvc annotations spring-annotations

今天我正在研究从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路径段

所以我对之前的链接有些怀疑:

  1. 点击previus链接时调用的URI是什么?

    是/ spring-mvc-showcase / data / matrixvars / simple?!?! (使用spring-mvc-showcase只是应用程序名称)

  2. 如果我把“foo”矩阵变量放在其他位置,那会无动于衷吗?

  3. 例如,如果我以这种方式放置“foo”变量:

    “/ data; foo = bar / matrixvars / simple”

    或以这种方式:

    “/数据/ matrixvars /简单;富=栏”

    它有同样的含义吗?

    好的,现在这是通过单击链接处理生成的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”)注释注释,并且我的控制器方法已被注释by: @RequestMapping(value =“{path} / simple”,method = RequestMethod.GET)这意味着以下内容?

    路径URI模板变量与第二个URI位置(在当前URI中是matrixvars)相关,因此该方法也可以处理如下的URI:

    /spring-mvc-showcase/data/SOMETHING/simple 
    

    是不是?

    非常感谢

    安德烈

1 个答案:

答案 0 :(得分:1)

数目:

点击[/data/matrixvars;foo=bar/simple]链接时调用的URI是什么?

  • 从浏览器的角度来看,URI与给定的完全相同。
  • 在Spring MVC中,它是/data/matrixvars/simple;实际的矩阵变量从URI“消失”,因为矩阵变量被认为是URI的可选组件。

如果我把“foo”矩阵变量放在其他位置,那会无动于衷吗?

  • 即可。矩阵变量与它们在路径中的位置相关联。如果将它们移动到不同的路径位置,则会改变它们的含义。

...所以这个方法也可以处理像 /spring-mvc-showcase/data/SOMETHING/simple

这样的URI
  • 正确,您的foo MatrixVariable定义支持类似/spring-mvc-showcase/data/SOMETHING;foo=bar/simple
  • 的内容