2012-11-18 7 views
65

In questo periodo sto studiando la Spring MVC mostrare esempio (scaricabile da STS dasboard) e ho qualche semplice domanda circa le Request Mapping esempi:Spring MVC Come si assume il valore del parametro di una richiesta HTTP GET nel mio metodo di controllo?

1) nella mia pagina home.jsp 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 si vede da questo link, sto facendo una richiesta HTTP GET con un parametro "foo" che contiene il valore: "bar".

Questa richiesta HTTP viene gestito dal seguente metodo del MappingController classe controller:

@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 gestire HTTP Request (solo GET tipo) che hanno un parametro denominato "foo"

Come può Prendo il valore ("bar") di questo parametro e lo metto in una variabile all'interno del codice del mio per metodo Parameter?

risposta

152

Come spiegato in the documentation, utilizzando un @RequestParam della nota:

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

La ringrazio molto per la risposta chiara e per il riferimento alla documentazione – AndreaNobili

+2

Nel caso in cui ci sono 10 numero di parametri, dobbiamo farlo 10 volte o c'è un modo migliore per lo scenario di thar – Count

+2

@Count: fare clic sul collegamento che ho fornito alla documentazione, quindi scorrere un po 'fino al paragrafo "Tipi di argomenti del metodo supportato" e leggere la parte relativa a "Oggetti comando o modulo" –

33

Si potrebbe anche usare un modello di URI. Se hai strutturato la tua richiesta in un URL restful, 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)"; 
} 

Spring URI Template Documentation

Problemi correlati