Spring框架里,如何用LocalDateTime、LocalDate作为方法参数?

2026-06-09 08:156阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2486个文字,预计阅读时间需要10分钟。

Spring框架里,如何用LocalDateTime、LocalDate作为方法参数?

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分钟。

Spring框架里,如何用LocalDateTime、LocalDate作为方法参数?

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,两者有区别哦。

阅读全文