5

今日は、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")アノテーションが付けられ、コントローラー メソッドに@RequestMapping(value="{path}/simple", method= RequestMethod.GET)とは、次のことを意味しますか?

パス URI テンプレート変数は 2 番目の URI 位置 (現在の URI では matrixvars) に関連しているため、このメソッドは次のような URI も処理できます。

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

そうですか?

どうもありがとうございました

アンドレア

4

1 に答える 1

1

答え:

/data/matrixvars;foo=bar/simple[ ] リンクをクリックしたときに呼び出される URI は何ですか?

  • ブラウザーの観点からは、URI は指定されたとおりです。
  • Spring MVC では、次のようになり/data/matrixvars/simpleます。マトリックス変数は URI のオプションのコンポーネントと見なされるため、実際のマトリックス変数は URI から「消えます」。

「foo」行列変数を他の位置に置いていたら、どうでもよかったのでは?

  • いいえ。行列変数は、パス内の位置に関連付けられています。それらを別のパス位置に移動すると、意味が変わります。

...したがって、このメソッドはURIのようなものも処理できます /spring-mvc-showcase/data/SOMETHING/simple

  • あなたのfooMatrixVariableが定義されているように、次のようなサポートを使用して、正しい/spring-mvc-showcase/data/SOMETHING;foo=bar/simple
于 2013-05-18T21:22:54.840 に答える