【问题标题】:Some information about @MatrixVariable annotation ins Spring 3.2Spring 3.2 中关于@MatrixVariable 注解的一些信息
【发布时间】:2012-12-01 21:36:17
【问题描述】:

今天我正在研究可从 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. 点击上一个链接时调用的 URI 是什么?

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

  2. 如果我将“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") 注释注释并且我的控制器方法被注释by: @RequestMapping(value="{path}/simple", method=RequestMethod.GET) 意思是下面这个?

路径 URI 模板变量与第二个 URI 位置相关(当前 URI 中的那个是 matrixvars),所以这个方法也可以处理类似的 URI:

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

对吗?

非常感谢

安德烈亚

【问题讨论】:

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


    【解决方案1】:

    答案:

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

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

    如果我将“foo”矩阵变量放在其他位置会无所谓吗?

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

    ...所以这个方法也可以处理类似 URI 的 /spring-mvc-showcase/data/SOMETHING/simple

    • 正确,您的foo MatrixVariable 定义为支持/spring-mvc-showcase/data/SOMETHING;foo=bar/simple 之类的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多