当前位置: 首页 > news >正文

前端get请求日期类型参数向后端传参失败

1、背景

get请求,通过url上传参,因此日期类型是string类型数据

2、异常信息

nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDate] for value '2011-02-01';
 nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2011-02-01]] 

3、解决方案

请求参数中添加

@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate contractStartDateEnd;

不能使用@JsonFormat

4、原因

  1. 注解@JsonFormat主要是后端到前端的时间格式的转换

  2. 注解@DateTimeFormat主要是前端到后端的时间格式的转换

  3. 这两者的注解一般联合使用

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private Date time;

      4.区别如下:

(1)@JsonFormat 是 Jackson 库中的注解,用于在序列化和反序列化过程中控制日期和时间的格式

该注解提供了一种自定义日期和时间格式的方式,以确保在 JSON 数据和 Java 对象之间正确地进行转换

(2)@DateTimeFormat 是 Spring 框架中用于处理日期和时间格式的注解。

它通常与 @RequestMapping、@RequestParam 等注解一起使用,以指定接收或发送日期时间参数时的格式。

以下是 @DateTimeFormat 注解的一些主要概念和功能:

pattern(模式): 通过 pattern 属性,您可以指定日期和时间的格式。
与 @JsonFormat 不同,@DateTimeFormat 是专门为 Spring 框架设计的,用于在 Web 请求中处理日期参数。

iso(ISO标准格式): 使用 iso 属性可以指定使用 ISO 标准的日期时间格式。
例如,@DateTimeFormat(iso = ISO.DATE) 表示日期部分采用标准日期格式。

style(样式): style 属性定义了预定义的日期和时间格式。
有三种样式可用:DEFAULT、SHORT、MEDIUM、LONG、FULL。这些样式在不同的地区设置下有不同的显示效果。

lenient(宽松解析): lenient 属性用于指定是否宽松解析日期。
如果设置为 true,则在解析日期时会尽量接受不严格符合格式的输入。

patternResolver(模式解析器): patternResolver 属性允许您指定自定义的模式解析器,以便更灵活地处理日期时间格式。

http://www.lryc.cn/news/342782.html

相关文章:

  • 【docker 】 push 镜像提示:denied: requested access to the resource is denied
  • 浏览器各类好用插件使用及常见问题(技巧)总结
  • Python批量计算多张遥感影像的NDVI
  • 6.k8s中的secrets资源
  • git 更换远程仓库地址三种方法总结
  • 快速找出存(不存在)在某个(或多个)文件的文件夹
  • Linux USB转串口设备路径的查找方法
  • 【初阶数据结构】单链表之环形链表
  • 【积分,微分,导数,偏导数公式推导】
  • java:递归实现的案例
  • Arxml文件解析03- 自动驾驶Radar服务radar_svc.arxml
  • Elasticsearch安装步骤
  • Windows系统和unbtun系统连接usb 3.0海康可见MVS和红外艾睿相机
  • 深入Django:用户认证与权限控制实战指南
  • Kubernetes - Dashboard 配置用户名密码方式登录
  • AIGC能给人类社会带来哪些变革?
  • 医药垃圾分类管理系统|基于SSM医药垃圾分类管理系统的系统设计与实现(源码+数据库+文档)
  • 用vim或gvim编辑程序
  • linus下Anaconda创建虚拟环境pytorch
  • synchronized与volatile关键字
  • Python基础之运算符操作
  • 【busybox记录】【shell指令】uniq
  • Nginx从入门到精通速成
  • Flutter笔记:Widgets Easier组件库(4)使用按钮组
  • Docker常用命令 镜像库设置
  • 无人零售,重塑购物新纪元
  • 【图片格式转换】ICO、JPG、JPEG、PNG图片格式在线免费转换
  • 通过自然语言处理执行特定任务的AI Agents;大模型控制NPC执行一系列的动作;个人化的电子邮件助手Panza
  • 4.2 JavaScript语法
  • 面试二十五、remove和earse的区别