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注解对入参,输出返回的时候都有效。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐