【发布时间】:2011-05-05 07:42:10
【问题描述】:
也许这应该行不通,但至少我想明白为什么。我在PUT 正文中传递了一个简单的 val=somevalue,但 spring 发送回了一个 400 Bad Request,因为它似乎无法识别 val 参数。
类似的请求适用于POST。会不会是 SpringMVC 没有将 PUT 请求体识别为参数源?
Content=-Type 在这两种情况下都正确设置为 application/x-www-form-urlencoded。
spring拒绝调用的方法是这样的:
@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 是否有效?
-
为什么在void方法中用@ResponseBody注解方法?该注释应该指示返回类型应直接写入 HTTP 响应正文。我认为情况并非如此。您也可以尝试这样做: data:{'val', encodeURIComponent(configValue)},
-
400代码返回的错误信息是什么?
标签: jquery rest spring-mvc