2012-12-22 9 views
6

Mam problem z wiosną i prośbą o wpis. Ja konfigurowania metody kontrolera dla wywołania AJAX, patrz definicja metody poniżejWiosenne argumenty @RequestParam nie są przekazywane w metodzie POST.

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestParam(value = "text", required = false) String text, 
     HttpServletResponse response) { 
     .... 

Obojętnie jaki sposób mogę nawiązać połączenie HTML, wartości dla parametrów @RequestParam są zawsze puste. Mam wiele innych metod, które wyglądają tak, główną różnicą jest to, że inne są metodami GET, podczas gdy ten jest POST. Czy nie jest możliwe użycie @RequestParam z metodą POST?

Używam wersji Spring 3.0.7.RELEASE - Czy ktoś wie, co może być przyczyną problemu?


kod Ajax:

$.ajax({ 
    type:'POST', 
    url:"/comments/add.page", 
    data:{ 
     uuid:"${param.uuid}", 
     type:"${param.type}", 
     text:text 
    }, 
    success:function (data) { 
     // 
    } 
}); 
+1

Jaki jest twój kod ajax? –

+0

Zaktualizowałem pytanie za pomocą kodu Ajax. Coś mi mówi, że przekazuję parametry w treści żądania, a nie parametry żądania, tak jak się spodziewałem :( –

+0

'@ RequestParam' działa zarówno z metodą POST, jak i GET (iw przejrzysty sposób). Z jakiego kodowania korzystasz? POST używa zawsze UTF-8 –

Odpowiedz

19

Problemem okazał się sposób, w jaki zostało wywołanie metody. Mój kod ajax przekazywał wszystkie parametry w treści żądania, a nie jako parametry żądania, dlatego moje parametry @RequestParam były puste. Zmieniłem kod AJAX:

$.ajax({ 
    type: 'POST', 
    url: "/comments/add.page?uuid=${param.uuid}&type=${param.type}", 
    data: text, 
    success: function (data) { 
     // 
    } 
}); 

Ja też zmieniłem metodę kontrolera do podjęcia tekst z organizmu żądanie:

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestBody String text, 
     HttpServletResponse response) { 

A teraz jestem coraz parametry jak oczekuję.

Powiązane problemy