2012-10-12 168 views
5

controlador de firma (He tratado como requestbody también):JSON posterior a la primavera controlador MVC

@RequestMapping(value = "/Lame", method = RequestMethod.POST) 
public 
@ResponseBody 
boolean getLame(@RequestParam String strToMatchA, @RequestParam String strToMatchB) {} 

Y esto como mi JSON:

{ 
"strToMatchA": "EN", 
"strToMatchB": "lon" 
} 

No trabajo, recibo el error:

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'strToMatchA' is not present 

Al eliminar este primer parámetro de la firma del método, a continuación, hace que funcione (el método se llama correctamente), lo que debería ser d ¿oing?

Cuando cambio los parámetros del método que se anota con @RequestBody me sale el siguiente error:

java.io.IOException: Stream closed 
+0

¿Ha compilado con la depuración habilitada? De lo contrario, los nombres de los parámetros no estarán disponibles. –

+0

@DavidGrant RequestParam tomará el nombre del parámetro definido en la firma del método. Pero lo he intentado mientras también especifico manualmente el nombre – NimChimpsky

+1

¿Qué biblioteca está utilizando para el mapeo de objetos? ¿Es Jackson o algo más? ¿Está en el classpath? Además, el método de solicitud para los controladores RESTFul debería ser básicamente 'GET' en lugar de' POST'. – Lion

Respuesta

3

Su JSON está bien, pero no la firma del controlador. Crea una clase con setters que coincidan con json. Úselo como argumento en lugar de sus cadenas. Anótelo con requestbody. Deberia de funcionar.

+2

¿No hay otra manera? Supuse que la primavera coul dhandle múltiples parámetros de solicitud? – NimChimpsky

+0

Puede pero no es un parámetro de solicitud lo que tiene es el cuerpo de la solicitud – eugen

+0

Lo he intentado con ambas modificaciones. Ninguno de los dos funciona ¿Cómo puedo hacerlo usando dos parámetros de método ...? – NimChimpsky

Cuestiones relacionadas