jquery – 如果使用PUT,SpringMVC不会识别请求体参数

前端之家收集整理的这篇文章主要介绍了jquery – 如果使用PUT,SpringMVC不会识别请求体参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
也许这应该不行,但至少我想明白为什么.我在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
}

猜你在找的SpringMVC相关文章