Spring MVC Jak pobrać wartość parametru żądania GET HTTP w mojej metodzie kontrolera?

87

W tym okresie studiuję przykład pokazowy Spring MVC (do pobrania z tablicy rozdzielczej STS) i mam kilka prostych pytań dotyczących Request Mappingprzykładów:

1) Na mojej home.jspstronie mam ten link:

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

Jak widać na tym łączu, wykonuję żądanie HTTP GET z parametrem „foo” zawierającym wartość: „bar”.

To żądanie HTTP jest obsługiwane przez następującą metodę klasy kontrolera MappingController:

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

Ta metoda zarządza żądaniami HTTP (tylko GETtyp), które mają parametr o nazwie „foo”

Jak mogę pobrać wartość („słupek”) tego parametru i umieścić ją w zmiennej wewnątrz kodu metody my by Parameter?

AndreaNobili
źródło

Odpowiedzi:

184

Jak wyjaśniono w dokumentacji , używając @RequestParamadnotacji:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}
JB Nizet
źródło
3
Bardzo dziękuję za jasną odpowiedź i odwołanie do dokumentacji
AndreaNobili
3
W przypadku, gdy jest 10 parametrów, czy musimy to robić 10 razy, czy jest lepszy sposób na ten scenariusz
Policz
2
@Count: kliknij link, który podałem do dokumentacji, a następnie przewiń trochę w górę, aż do akapitu „Obsługiwane typy argumentów metod” i przeczytaj część o „Poleceniach lub obiektach formularzy”
JB Nizet
43

Możesz również użyć szablonu URI. Jeśli ustrukturyzowałeś żądanie w sprecyzowany adres URL, Spring może przeanalizować podaną wartość z adresu 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)";
}

Dokumentacja szablonu URI wiosny

Kevin Bowersox
źródło