SpringMVC的json数据绑定Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
总结一下今天遇到的问题:
第一个问题:在使用SpringMVC的时候,前台发送ajax请求传输json数据到后台报错
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
前台代码:
$.ajax({
url: "${pageContext.request.contextPath}/savePoints",
type: "post",
data: JSON.stringify(list),
contentType: "application/json",
success: function (result) {
alert("Ok!");
},
fail: function (result) {
alert("failed!");
}
});
后台:
@RequestMapping("/savePoints")
@ResponseBody
public void savePoints(@RequestBody List<Point> list){
logger.info(list);
//......
}
原因应该是出在SpringMVC对json数据的接收上面。搜索了很多解决办法,有说加入jackson-mapper-asl.jar包的,然后在spring配置文件中加入如下内容
<!--<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list >
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
配置文件的配置信息跟jackson的版本有关:
第一种应该是spring3之前:
'org.springframework.http.converter.json.MappingJacksonHttpMessageConverter'
第二种是spring3之后:
'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter'
运行之后又报了新的错误:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
这个错误就好看懂了一点,应该是jackson的核心jar包没有引入,于是我又加入了这些jar包:
后面就没有报错了,数据也接收正常。
于是我删掉了jackson-mapper-asl.jar包,只保留了jackson的三个核心包,结果还是正常。
最新的配置是: jackson的三个jar包和spring文件里面的MappingJackson2HttpMessageConverter的配置。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)