从3.0.4升级到spring 3.2.2,RequestBody字符串将被转义
我们最近从3.0.4升级到了Spring3.2.2。升级后,我们注意到控制器函数中的“RequestBody”参数被转义或urlencoded。我们将Springbeans和SpringMVC的schemaLocation更新为3.2.xsd 例如,在下面的控制器功能中从3.0.4升级到spring 3.2.2,RequestBody字符串将被转义,spring,spring-mvc,Spring,Spring Mvc,我们最近从3.0.4升级到了Spring3.2.2。升级后,我们注意到控制器函数中的“RequestBody”参数被转义或urlencoded。我们将Springbeans和SpringMVC的schemaLocation更新为3.2.xsd 例如,在下面的控制器功能中 @RequestMapping(value = "/getFunnyFilters", method = RequestMethod.POST) public ModelAndView getFunnyFilters(@Requ
@RequestMapping(value = "/getFunnyFilters", method = RequestMethod.POST)
public ModelAndView getFunnyFilters(@RequestBody String body, HttpSession session) {
3.0.4中主体的值为
{"selectedFilters":{"values":[]}}
而在3.2.2中是
%7B%22selectedFilters%22%3A%7B%22values%22%3A%5B%5D%7D%7D=
我们是否缺少任何设置,或者这是3.2.2中的默认行为。如有任何意见,将不胜感激
谢谢您能检查一下内容类型吗?您可以在HTTP请求的标题中找到它。内容类型是“application/x-www-form-urlencoded;charset=UTF-8”。您可以尝试使用
application/json
?这应该可以解决它。@Aarondigula我认为spring会向后兼容,而且这段代码在过去的一年中在3.0.4中运行良好,因此我不愿意在头文件或源代码中进行更改。也许这是一个已经修复的错误。我目前的直觉是,当您使用x-www-form-urlencoded
时,第二个输出是正确的,因为至少{
是必须转义的非法字符。所以问题是为什么Spring突然停止自动解码wire格式。