2011-12-01 24 views
6

Estoy creando un sitio web RESTful con Spring 3.0. Estoy usando ContentNegotiatingViewResolver, así como HTTP Message Convertors (como MappingJacksonHttpMessageConverter para JSON, MarshallingHttpMessageConverter para XML, etc.). Puedo obtener el contenido XML con éxito, si uso el sufijo .xml en el último URL y lo mismo en el caso de JSON con el sufijo .json en URL.XML/JSON POST con RequestBody en Spring REST Controller

Obtención de contenido XML/JSON desde el controlador no me produce ningún problema. Pero, ¿cómo puedo ENVIAR el XML/JSON con el cuerpo de la solicitud en el mismo método del Controlador?

Por ej.

@RequestMapping(method=RequestMethod.POST, value="/addEmployee") 
    public ModelAndView addEmployee(@RequestBody Employee e) { 
     employeeDao.add(e); 
     return new ModelAndView(XML_VIEW_NAME, "object", e); 
} 

Respuesta

11

usted debe considerar no utilizar una vista para volver JSON (o XML), pero el uso de la anotación @ResponseBody. Si el empleado es lo que debe ser devuelta, la primavera y el MappingJacksonHttpMessageConverter serán Traducir el objeto Empleado a JSON si se utiliza un método de definición e implementación como esto (nota, no probado):

@RequestMapping(method=RequestMethod.POST, value="/addEmployee") 
    @ResponseBody 
    public Employee addEmployee(@RequestBody Employee e) { 
    Employee created = employeeDao.add(e); 
    return created; 
    } 
+0

Gracias por reply.I' Intentaré esto y de vuelta a usted pronto :) –

+0

Stoffer, he intentado el camino, usted ha respondido. Pero cuando intenté PUBLICAR cualquier contenido de XML/JSON en el cuerpo de la solicitud al método del controlador. Estoy consiguiendo el Excepción desde allí es decir ** HTTP Status 400 - Tipo de contenido 'text/plain; charset = UTF-8' no es compatible ** ¿Es porque yo estoy usando tanto ContentNegotiatingViewResolver y Http mensaje Convertidores ?? o hay alguna otra razón detrás de esto. –

+4

Los convertidores en Spring se registran para cierto tipo de contenido (para el cuerpo de la solicitud) y aceptan (para la respuesta). Para json es 'application/json' y algunos otros. Para XML es 'application/xml' y algunos otros. Asegúrese de que su cliente envíe 'content-type: application/json' y' accept: application/json' y funcionará. –

Cuestiones relacionadas