2012-11-18 2 views
65

In dieser Zeit ich die Spring MVC bin beschlagend präsentierte Beispiel (herunterladbar von STS dasboard) und ich habe einige einfache Frage über die Request Mapping Beispiele:Spring MVC Wie nehme ich den Parameterwert einer GET HTTP-Anfrage in meiner Controller-Methode?

1) In meiner home.jsp Seite Ich habe diesen Link:

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

Wie Sie über diesen Link sehen können, mache ich eine HTTP GET Anfrage mit einem "foo" -Parameter mit dem Wert: "bar".

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

Diese Methode verwalten HTTP Request (nur GET-Typ), die ein Parameter mit dem Namen "foo"

Wie kann haben:

Diese HTTP-Anforderung wird durch die folgende Methode der Controller-Klasse MappingController behandelt Ich nehme den Wert ("bar") dieses Parameters und gebe ihn in eine Variable innerhalb des Codes meiner by-Parameter-Methode ein.

Antwort

152

Wie in the documentation, durch eine @RequestParam Anmerkung mit:

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

Vielen Dank für Sie klare Antwort und für den Verweis auf die Dokumentation – AndreaNobili

+2

Im Fall, wenn es 10 ist Anzahl der Parameter, müssen wir dies tun 10 mal oder es gibt eine bessere Möglichkeit für thar Szenario – Count

+2

@Count: Klicken Sie auf den Link, den ich der Dokumentation gab, dann ein wenig nach oben bis zum Absatz "unterstützte Methode Argumenttypen", und las den Teil über "Befehl oder Formular Objekte" –

33

Sie auch eine URI-Vorlage verwenden können. Wenn Sie Ihre Anfrage in eine erholsame URL strukturiert haben, könnte Spring den bereitgestellten Wert von der URL analysieren.

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