2012-04-18 14 views
7

Używam spring-mvc 3.1.0.RELEASE i z jakiegoś powodu odwzorowanie POST z parametrami zapytania i treścią żądania nie działa.Używanie zarówno @RequestBody i @RequestParam razem na wiosnę mvc3

Oto jak wygląda moja metoda kontroler:

@RequestMapping(method = POST, value = "/post-to-me/") 
    public void handlePost(
    @RequestBody Content content, 
    @RequestParam("param1") String param1, 
    @RequestParam("param2") String param2 
){ 
     //do stuff  
    } 

Jednakże, jeśli przekonwertować wszystkie żądania do params params ścieżki, mapowanie działa. Czy ktoś wpadł na coś podobnego?

Dzięki!

EDIT: "nie działa" == 404 Gdy próbuję robić, POST /post-to-me?param1=x&param2=y

+0

Czy to działa, jeśli usunąć '@RequestParam ("param1") param1' String i' param2' też? – Ralph

+0

jaki typ zawartości ma twoja prośba i jaki typ zawartości akceptuje w odpowiedzi? – soulcheck

+0

Mam ten sam problem, ale błąd wynosi 500 ... czy rozwiązałeś swój problem? – itsMe

Odpowiedz

0

Po pierwsze, POST url doen't dopasować metodę kontroler URL, Twój post url musi być „/ post-to- me /? param1 = x & param2 = y”nie "/ post-do-mnie? param1 = x & param2 = y"

drugie, skąd pochodzą z klasy Content ?? Użyłem String i działa dobrze dla mnie

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me/") 
public void handlePost(@RequestBody String content, 
     @RequestParam("param1") String param1, 
     @RequestParam("param2") String param2, HttpServletResponse response) { 
    System.out.println(content); 
    System.out.println(param1); 
    System.out.println(param2); 
    response.setStatus(HttpServletResponse.SC_OK); 
} 

Zauważ, że użyłem HttpServletResponse zwrócić kod HTTP 200, ale myślę, że jest to lepsze rozwiązanie dla kodów powrotu HTTP, to sprawdzić: Multiple response http status in Spring MVC

1

spływu slash na końcu twojej prośby o odwzorowanie wartości może być problemem. Spróbuj:

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me") 

lub wysłać zapytanie POST do POST /post-to-me/?param1=x&param2=y

Powiązane problemy