2011-05-08 17 views
7

Tengo una pregunta muy simple, pero me parece que no puede encontrar una respuesta simple:¿Se puede usar Jackson con Spring MVC 3.0 para vincular también RequestBody a Java Bean?

llegué Jackson trabajando para serializar Java Beans a JSON en la respuesta usando @ResponseBody

pero no he podido volver a serializar JSON a Java Beans en la solicitud usando @RequestBody

p. Ej.

// this works fine, Bean is being serialized to JSON 
@RequestMapping(...) 
public @ResponseBody Bean getSomething(...){ 
    //... 
} 

// I don't know how to make this work, if if there is a way at all 
@RequestMapping(...) 
public void setSomething(@RequestBody Bean bean, ...){ 
    //... 
} 
  1. ¿Es posible que la solicitud en absoluto?
  2. Si es así, ¿cómo configurarlo?
  3. ¿Hay algún ejemplo/sugerencia de JQuery (por ejemplo, establecer el tipo de contenido correcto)?

Actualización:.

Ver JQuery, Spring MVC @RequestBody and JSON - making it work together algunas peculiaridades en la configuración (que trabajó para responseBody, pero no lo hizo para RequestBody, que no tiene sentido, la configuración es correcta o equivocada podría ser un error?)

Respuesta

6
  1. Sí, es posible.

  2. La configuración del lado del servidor probablemente esté bien si su @ResponseBody está funcionando.

  3. Deberá establecer el tipo de contenido en application/json. El método JQuery.ajax() tiene un parámetro contentType. Se puede encontrar un gran ejemplo/resumen de AJAX y Spring 3 here. Tenga en cuenta que está utilizando un método $ .postJSON, que probablemente sea this simple plugin.

+0

Gracias. Esto me llevó a algún progreso (se está llamando al método). Sin embargo, ahora configuro el objeto (bean) como nulo (aunque se envía correctamente si se rastrea el HTTP), estoy a punto de darme por vencido y serializarlo usando técnicas de la vieja escuela ... (simplemente lea esa solicitud a una Cadena y use un deserializador JSON literalmente) –

+0

¿Podría ser que mi servidor esté rechazando la aplicación/json mime type ??? ¿Podría ser esa la única razón? –

+0

Creo que obtendrías algún código de error HTTP, o algún tipo de error que podrías ver en el rastreo HTTP. ¿Hay alguna razón por la que no pueda usar el enlace regular de Spring y simplemente pase los parámetros de solicitud, en lugar de JSON? – David

Cuestiones relacionadas