Spring框架里,如何用LocalDateTime、LocalDate作为方法参数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2486个文字,预计阅读时间需要10分钟。
0x0+背景+项目中使用LocalDateTime系列作为dto中时间的类型,但spring收到参数后总报错,为了全局配置时间类型转换,尝试了以下3种方法。注:本文基于SpringBoot 2.0测试,如无法生效。
0x0 背景
项目中使用LocalDateTime系列作为dto中时间的类型,但是spring收到参数后总报错,为了全局配置时间类型转换,尝试了如下3中方法。
注:本文基于Springboot2.0测试,如果无法生效可能是spring版本较低导致的。PS:如果你的Controller中的LocalDate类型的参数啥注解(RequestParam、PathVariable等)都没加,也是会出错的,因为默认情况下,解析这种参数使用ModelAttributeMethodProcessor进行处理,而这个处理器要通过反射实例化一个对象出来,然后再对对象中的各个参数进行convert,但是LocalDate类没有构造函数,无法反射实例化因此会报错!!!
0x1 当LocalDateTime作为RequestParam或者PathVariable时
这种情况要和时间作为Json字符串时区别对待,因为前端json转后端pojo底层使用的是Json序列化Jackson工具(HttpMessgeConverter);而时间字符串作为普通请求参数传入时,转换用的是Converter,两者有区别哦。
本文共计2486个文字,预计阅读时间需要10分钟。
0x0+背景+项目中使用LocalDateTime系列作为dto中时间的类型,但spring收到参数后总报错,为了全局配置时间类型转换,尝试了以下3种方法。注:本文基于SpringBoot 2.0测试,如无法生效。
0x0 背景
项目中使用LocalDateTime系列作为dto中时间的类型,但是spring收到参数后总报错,为了全局配置时间类型转换,尝试了如下3中方法。
注:本文基于Springboot2.0测试,如果无法生效可能是spring版本较低导致的。PS:如果你的Controller中的LocalDate类型的参数啥注解(RequestParam、PathVariable等)都没加,也是会出错的,因为默认情况下,解析这种参数使用ModelAttributeMethodProcessor进行处理,而这个处理器要通过反射实例化一个对象出来,然后再对对象中的各个参数进行convert,但是LocalDate类没有构造函数,无法反射实例化因此会报错!!!
0x1 当LocalDateTime作为RequestParam或者PathVariable时
这种情况要和时间作为Json字符串时区别对待,因为前端json转后端pojo底层使用的是Json序列化Jackson工具(HttpMessgeConverter);而时间字符串作为普通请求参数传入时,转换用的是Converter,两者有区别哦。

