martes, 5 de marzo de 2013

Spring , Ajax y error 415 unsupported media type

Estoy probando ahora hacer una pequeña aplicación con Spring MVC y usar jquery y ajax para la parte de la vista. Dando mis primeros pasos me he encontrado con este fallo.

Esta es mi llamada ajax:
var contexPath = "<%=request.getContextPath() %>";
$.ajax( {
   dataType: "json",
   contentType: "application/json; charset=UTF-8",
   type: "POST",
   url: contexPath + "/jsonSearchDisc.htm",
   data: JSON.stringify(aoData),
   success: fnCallback,
   error : function (e) {
       alert (e);
   }
} );
Y este es mi controller de Spring que recoge la llamada y realiza la búsqueda
@Controller
public class SearchDiscController implements Serializable {
	private static final long serialVersionUID = 1L;
	private final static Logger LOGGER = Logger.getLogger(SearchDiscController.class);

	@Autowired
	private DiscoService service;

	@RequestMapping(value = "/jsonSearchDisc.htm", method = RequestMethod.POST)
	public @ResponseBody
	Object getData(@RequestBody final Object param, final HttpServletResponse response) {
		return service.findAll();
	}
}
Y aunque todo parece que esta correctamente, cuando realizaba la llamada la respuesta que obtenia era la siguiente: El servidor rechazó este requerimiento porque la entidad requerida se encuentra en un formato no soportado por el recurso requerido para el método requerido. Tras dar algunas vueltas me di cuenta que el error estaba en la configuración de Spring necesitaba añadir una línea de configuración más, esta:

Y es que a pesar de que ya tenia indicado la propiedad de context:component-scan, esta otra es la encargada de registrar los manejadores necesarios para trabajar con las clases de @Controller

2 comentarios:

  1. Buenas, en mi caso la solución fue añadir la configuración del annotation driven en el fichero de configuración de pring. Prueba con ello.

    Un saludo

    ResponderEliminar