该问题出现在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,自己手动在后台转换,这样报错也会被发现