先说问题:在前端通过post传输一个实体类到后台,后台通过@RequestBody来接受前端传过来的实体类。实体类中有几个时间类型的属性有@JsonFormat的注解。点击提交后报400错误。
400错误,最大几率是出现了数据类型不一致的问题,简单来说是Controller层不用正确读取你发送请求附带的参数。
针对这个400错误,我首先以为是我后端的实体类和前端的传入的实体类参数有差异,查找之后并没有区别。然后我把后端的实体类换成map,可以正常接收。定位问题在实体类中,实体类跟map区别,现在只在@JsonFormat注解上有差异,看了前后端的时间类,前端用的vue+element-ui的时间组件,设置的时间格式是yyyy-MM-dd HH:mm 后端@JsonFormat注解的是yyyy-MM-dd HH:mm:ss 时间格式不一样,导致后端接收不到前端传的值,把时间格式改成一样就可以了。
出现这个问题一个是不明白@JsonFormat注解在何时起作用,一个是不知道前后端传值的底层机制,之后需要了解一下这块知识,在遇到问题就能很好解决了。