天天看点

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

1.问题描述

访问的地址是:http://localhost:8080/XXX/addUser

先看浏览器访问效果:

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

前后台都未报错:

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

在浏览器地址栏输入url:http://localhost:8080/XXX/addUser?username=xiaoming&birth=2019-05-03

浏览器状态码为400。

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

2.发现问题

解释一下状态码400的含义:

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

于是我尝试分别传不同的参数,终于发现问题是前端向后端传递的是日期字符串,后台接参数的birth字段是Date类型,也就是前台传的日期字符串跟后台Date类型的属性不能正确绑定,所以才出现上述问题。

之前前台为了获取日期字符串,使用了@JsonFormat注解。

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

3.解决方法

添加@DateTimeFormat(pattern="yyyy-MM-dd")注解。

前台使用ajax访问后台Controller,浏览器网络状态码为空,前后台均不报错1.问题描述2.发现问题3.解决方法4.总结

4.总结

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")的作用是使后台向前台传递Date类型的参数时,将Date类型转换为日期字符串。

@DateTimeFormat(pattern="yyyy-MM-dd")  的作用是使后台接收前台的日期字符串,将日期字符串转换为Date类型对象。