Quizás se supone que esto no funciona, pero al menos me gustaría entender por qué. Estoy pasando un val simple = algún valor en el cuerpo PUT
pero el resorte devuelve un 400 Bad Request
ya que no parece reconocer el parámetro val.SpringMVC no reconoce los parámetros del cuerpo de solicitud si usa PUT
La solicitud similar funciona con POST
. ¿Podría ser SpringMVC que no reconoce el cuerpo de la solicitud PUT
como fuente para los parámetros?
Content=-Type
está configurado correctamente para application/x-www-form-urlencoded en ambos casos.
El método que la primavera se niega a llamar es el siguiente:
@RequestMapping(value = "config/{key}", method = RequestMethod.PUT)
@ResponseBody
public void configUpdateCreate(final Model model, @PathVariable final String key, @RequestParam final String val,
final HttpServletResponse response) throws IOException
{
//...
}
Para completar, aquí es la llamada jQuery Ajax. No puedo ver nada malo con eso. El cliente es Firefox 4 o Chrome, ambos muestran el mismo resultado.
$.ajax({
url:url,
type:'PUT',
data:'val=' + encodeURIComponent(configValue),
success: function(data) {...}
});
¿Alguna idea?
¿funciona cuando lo cambia a POST? –
¿Por qué anota el método con @ResponseBody en un método nulo? Se supone que esa anotación indica que el tipo de devolución debe escribirse directamente en el cuerpo de respuesta HTTP. Creo que este no es el caso. También podría intentar hacer esto: data: {'val', encodeURIComponent (configValue)}, – Javi
¿Cuál es el mensaje de error que aparece con el código 400? – skaffman