Spring MVC Bagaimana cara mengambil nilai parameter dari GET HTTP Request dalam metode kontroler saya?

87

Dalam periode ini saya mempelajari contoh showcase MVC Spring (dapat diunduh dari dasboard STS) dan saya memiliki beberapa pertanyaan sederhana tentang Request Mappingcontoh:

1) Di home.jsphalaman saya, saya memiliki link ini:

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

Seperti yang Anda lihat dari tautan ini, saya melakukan Permintaan HTTP GET yang memiliki parameter "foo" yang berisi nilai: "bar".

Permintaan HTTP ini ditangani dengan metode kelas pengontrol MappingController berikut:

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

Metode ini mengelola Permintaan HTTP (hanya GETtipe) yang memiliki parameter bernama "foo"

Bagaimana cara mengambil nilai ("bar") dari parameter ini dan memasukkannya ke dalam variabel di dalam kode metode Parameter by saya?

AndreaNobili
sumber

Jawaban:

184

Seperti yang dijelaskan dalam dokumentasi , dengan menggunakan @RequestParamanotasi:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}
JB Nizet
sumber
3
Terima kasih banyak atas jawaban Anda yang jelas dan atas referensi untuk dokumentasi
AndreaNobili
3
Jika ada 10 jumlah parameter, apakah kita harus melakukan ini 10 kali atau ada cara yang lebih baik untuk skenario itu
Hitung
2
@Count: klik tautan yang saya berikan ke dokumentasi, lalu gulir ke atas sedikit hingga paragraf "Jenis argumen metode yang didukung", dan baca bagian tentang "Perintah atau objek bentuk"
JB Nizet
43

Anda juga bisa menggunakan template URI. Jika Anda menyusun permintaan Anda menjadi URL yang tenang, Spring dapat mengurai nilai yang diberikan dari url.

HTML

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

Kontroler

@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)";
}

Dokumentasi Template URI Musim Semi

Kevin Bowersox
sumber