也许这应该不行,但至少我想明白为什么.我在PUT体中传递一个简单的val = somevalue,但是
spring发回了一个400错误请求,因为它似乎不能识别val参数.
类似的请求与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) {...} });
有任何想法吗?
解决方法
在这一点上,我不知道该做些什么,但是这是一个“不会修复”的错误报告.我一直在打同样的问题
https://jira.springsource.org/browse/SPR-7414
更新:这是我的修复.我正在使用RequestBody注释.然后使用MultiValueMap.
http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/mvc.html#mvc-ann-requestbody
@RequestMapping(value = "/{tc}",method = RequestMethod.PUT) public void update(@PathVariable("tc") final String tc,@RequestBody MultiValueMap<String,String> body,HttpServletResponse response) { String name = body.getFirst("name"); // more code }