2012-11-18 11 views
65

W tym okresie jestem studing wiosną MVC zaprezentować przykład (do pobrania ze dasboard STS) i mam pewne proste pytanie o Request Mapping Przykłady:Spring MVC Jak pobrać wartość parametru żądania HTTP GET w mojej metodzie sterownika?

1) w moim home.jsp stronie 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ć po tym łączu, robię żądanie HTTP GET posiadające parametr "foo" zawierający wartość: "bar".

to żądanie HTTP jest obsługiwany przez następujące sposobie MappingController klasy kontrolera:

@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ądzania żądania HTTP (tylko GET typu), które to parametr o nazwie „foo”

Jak można Biorę wartość ("bar") tego parametru i umieszczam go w zmiennej wewnątrz kodu mojej metody Parameter?

Odpowiedz

152

Jak wyjaśniono w the documentation, stosując @RequestParam adnotacji:

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

Dziękuję bardzo dużo dla ciebie jasnej odpowiedzi i odniesienie do dokumentacji – AndreaNobili

+2

w przypadku, gdy istnieje 10 liczba parametrów, czy musimy to zrobić 10 razy lub jest lepszy sposób na thar scenariusz – Count

+2

@ Count: kliknij link podałem do dokumentacji, a następnie przewiń trochę do akapitu "Obsługiwane typy argumentów metody" i przeczytaj część o "Obiekty polecenia lub formularza" –

33

Można także użyć szablonu URI. Jeśli skonstruowałeś swoją prośbę w spokojny URL, Spring mógłby 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> 

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

Powiązane problemy