SpringMVCコントローラーメソッドでGETHTTPリクエストのパラメーター値を取得するにはどうすればよいですか?


87

この期間に、Spring MVCショーケースの例(STS dasboardからダウンロード可能)を学習していRequest Mappingます。例について簡単な質問があります。

1)私のhome.jspページには次のリンクがあります:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

このリンクからわかるように、値「bar」を含む「foo」パラメーターを持つHTTPGETリクエストを実行しています。

このHTTPリクエストは、コントローラークラスMappingControllerの次のメソッドによって処理されます。

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

このメソッドGETは、「foo」という名前のパラメーターを持つHTTPリクエスト(タイプのみ)を管理します

このパラメーターの値(「バー」)を取得して、by Parameterメソッドのコード内の変数に入れるにはどうすればよいですか?

回答:


184

ドキュメントで説明されているように@RequestParam注釈を使用して:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}

3
明確な回答とドキュメントへの参照をありがとうございました
AndreaNobili 2012年

3
パラメータの数が10の場合、これを10回実行する必要がありますか、それともシナリオのより良い方法がありますか
カウントし

2
@Count:ドキュメントに与えたリンクをクリックし、「サポートされているメソッド引数タイプ」の段落まで少し上にスクロールして、「コマンドまたはフォームオブジェクト」に関する部分を読んでください
JB Nizet 2014年

43

URIテンプレートを使用することもできます。リクエストをRESTfulURLに構造化した場合、SpringはURLから提供された値を解析できます。

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

コントローラ

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

SpringURIテンプレートのドキュメント

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.