Failed to convert from type [java.lang.String] to type [java.util.Date]

nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value ‘2019-05-30 14:47:24’; nested exception is java.lang.IllegalArgumentException]]

今天做项目的时候遇到了一个BUG,springboot中后台接收前端传过来的时间报错,后面捣鼓了一阵发现前端传过来的是json数据,所以时间变为string类型的了,后台就转换不了咯。
在这里插入图片描述
后台报错:
在这里插入图片描述
在controller层加个@InitBinder注解可以解决,但是试了一下好像还是有点小BUG,就是在没有传时间的情况下会报错,前端不能传NULL过来,但是这不是我要得结果啊,SO可能是我打开的方式不对。。。。。
在这里插入图片描述
对了,好像这个注解的方法不能为public。
不传值,也就是为NULL的情况下报错:
在这里插入图片描述
最最后简单粗暴的方法,完美解决,就是要加的注解有点多,O(∩_∩)O哈哈~,不过有CV大法,SO小意思啦,就是在每个pojo的Date类型的字段加个@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)注解
在这里插入图片描述
运行成功。
在这里插入图片描述
2022-07-06更新:
无意中翻回以前的东西,没想到当初那么简单的一个BUG搞了半天,哈哈,着实菜鸡水平。

这里做一下补充:

1、前端传过来的数据 不是 JSON格式的时候才用@DateTimeFormat注解,而且@DateTimeFormat注解只对入参时有效,输出返回的时候不会格式化。

2、当前端传过来的数据 JSON格式的时候,比如Controller层加了@Requestbody注解接收。建议使用 @JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”) 注解,@JsonFormat注解对入参,输出返回的时候都有效。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值