也许这应该是行不通的,但至少我想明白为什么。我在PUT
body中传递了一个简单的val = somevalue,但是spring发回400 Bad Request
,因为它似乎没有识别val参数。如果使用PUT,SpringMVC无法识别请求身体参数
相似的请求使用POST
。难道是SpringMVC不认识PUT
请求身体作为参数的来源吗?
Content=-Type
在两种情况下都正确设置为application/x-www-form-urlencoded。
春天拒绝调用的方法是这样的:
@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
{
//...
}
为了完整起见,这里是jQuery的AJAX调用。我看不出有什么问题。客户端是Firefox 4或Chrome,都显示相同的结果。
$.ajax({
url:url,
type:'PUT',
data:'val=' + encodeURIComponent(configValue),
success: function(data) {...}
});
任何想法?
当它更改为POST时,它会工作吗? – 2011-05-05 12:30:33
为什么用@ResponseBody在void方法中注释该方法?该注释应该表明返回类型应直接写入HTTP响应主体。我认为情况并非如此。你可以尝试这样做,以及:数据:{“VAL”,encodeURIComponent方法(configValue)}, – Javi 2011-05-05 14:53:10
那是什么回来与400代码错误消息? – skaffman 2011-05-05 17:06:06