2012-04-18 17 views
7

Estoy usando spring-mvc 3.1.0.RELEASE y por alguna razón, el mapeo de POST con parámetros de consulta y el cuerpo de la solicitud no funciona.Usando @RequestBody y @RequestParam juntos en la primavera mvc3

Así es como se ve mi método controlador:

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

Sin embargo, si puedo convertir todos los parametros de solicitud a params de trayectoria, la cartografía funciona. ¿Alguien ha encontrado algo similar?

Gracias!

EDIT: "no funciona" == 404 cuando intento hacer, POST /post-to-me?param1=x&param2=y

+0

¿Funciona, si se quita '@RequestParam ("param1") param1' cadena y' param2' también? – Ralph

+0

¿Qué tipo de contenido tiene su solicitud y qué tipo de contenido acepta en respuesta? – soulcheck

+0

tengo el mismo problema, pero el error es 500 ... ¿ha resuelto su problema? – itsMe

Respuesta

0

primer lugar, su URL de la publicación Doe no coincidir con el método controlador de URL, la URL POST debe ser "/ post-a- me /? param1 = x & param2 = y "not"/post-to-me? param1 = x & param2 = y "

En segundo lugar, ¿de dónde viene la clase de contenido? He utilizado una cuerda y me da buenos resultados

@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); 
} 

Tenga en cuenta que he usado HttpServletResponse para devolver un código HTTP 200, pero creo que hay una mejor solución para los códigos de retorno HTTP, mira esto: Multiple response http status in Spring MVC

1

que se arrastra una barra al final del valor de asignación de su solicitud podría ser el problema. Probar:

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

o enviar su solicitud POST a POST /post-to-me/?param1=x&param2=y

Cuestiones relacionadas