前端传递data对象数据到后端出现空值问题如何处理?
1.若出现了问题可以先检查请求头是否对应,若不对应可以改一下请求头,或者是按照默认配置使用(默认配置下就是一致的)
2.其实传递对象到后端擅自改动配置会出现非常多的编码问题,所以在传递对象数据时,最好只传递一个参数,且改动默认配置越少越好,对于对象类型数据后端不需要加@RequstBody注解也可以顺利得到数据。
出现了空值的时候可以改前端,也可以改后端,这里只改一下前端的编码格式。
修改前端数据格式,由于自定义的data对象数据并不是序列化的,所以我们使用qs中的stringify方法将其序列化再传递到后端
代码如下
前提是要安装qs
//安装qs,听说axios自带qs,这个我不确定,所以特地安装了qs
npm install qs
//导入qs,哪里用就导入在哪里
import qs from 'qs'
//后端正常接受数据测试
@RequestMapping(value="/applicant/updateApplicant",method = RequestMethod.POST)
public int updateApplicant(Applicant applicant){
System.out.println(applicant);
return 1;
}
//前端方法内使用了qs.stringify()处理出序列化的对象
//http是我自定义的axios的别名,post方法怎么用都无所谓,只要有qs.stringify(this.ApplicantObject)即可
this.$http({
method: 'post',
url: "/applicant/updateApplicant",
data:qs.stringify(this.ApplicantObject) //重点,这是一个对象数据,且前端在data内自定义的
,
})
.then((response)=>{
if(response.data>0){
alert("修改成功!");
// this.$router.go(-1);
}
})
.catch(function(error){
console.log(error);
})
至此后端数据不为空了