@RequestBody注解Ajax post json List集合数据请求400/415问题
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
该问题出现在ajax发送post请求时返回错误代码,后台不报任何错误
问题原因和解决方法:
1.post发送的json数据错误
@RequestBody注解是把post请求的整体数据进行处理,@RequestBody后面的参数是和json数据没有关系的,比如
@RequestBody List<CourseVo> courseVos;
//此句的courseVos不用在json数据中包含!!!!!
发送该数据的js为下
$.ajax({
type: "post",
url: '/beansOffice/addCourseData',
dataType:"json",
contentType:"application/json",
data: JSON.stringify(this.courseView),//此块注意
//注意数据是data: JSON.stringify(this.courseView)
//而不是data: JSON.stringify({courseVos:this.courseView})
//两者区别就是有没有把@RequestBody注解后的“courseVos”当为json数据
success: function (data) {
if (data.status == 200 && data.body.code == 200)
alert("提交成功!");
}
});
2.Spring或maven版本过低导致jackson包没有导入
jackson是spring默认的json处理工具,没有该包则会对一些复杂对象会处理异常
依赖包为下(当前最新):
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.8</version>
</dependency>
3.json数据和对象数据转换出问题
这个问题很容易出,由于异常被吃掉很不容易发现
比如对象中定义数据 int a;但是你有可能默认值是“”,即空字符串,则也会直接报400错误而后台没有任何异常
还有一些比如时间类型(data)、布尔(boolean)或自定义类型,建议所有都使用String,自己手动在后台转换,这样报错也会被发现
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)