Spring MVC Come prendere il valore del parametro di una richiesta HTTP GET nel metodo del controller?


87

In questo periodo sto studiando l'esempio della vetrina Spring MVC (scaricabile dal dasboard STS) e ho qualche semplice domanda sugli Request Mappingesempi:

1) Nella mia home.jsppagina ho questo link:

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

Come puoi vedere da questo link sto eseguendo una richiesta HTTP GET con un parametro "foo" contenente il valore: "bar".

Questa richiesta HTTP viene gestita dal metodo seguente della classe controller MappingController:

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

Questo metodo gestisce le richieste HTTP (solo GETtipo) che hanno un parametro chiamato "foo"

Come posso prendere il valore ("bar") di questo parametro e inserirlo in una variabile all'interno del codice del mio metodo by Parameter?

Risposte:


184

Come spiegato nella documentazione , utilizzando @RequestParamun'annotazione:

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

3
Grazie mille per la risposta chiara e per il riferimento alla documentazione
AndreaNobili

3
Nel caso in cui ci siano 10 numeri di parametri, dobbiamo farlo 10 volte o c'è un modo migliore per lo scenario thar
Conta

2
@Count: fai clic sul collegamento che ho fornito alla documentazione, quindi scorri leggermente verso l'alto fino al paragrafo "Tipi di argomenti del metodo supportati" e leggi la parte su "Oggetti di comando o modulo"
JB Nizet

43

Puoi anche utilizzare un modello URI. Se hai strutturato la tua richiesta in un URL riposante, Spring potrebbe analizzare il valore fornito dall'URL.

HTML

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

Controller

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

Documentazione del modello URI Spring

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.