首页 > 其他分享 >彻底搞懂@JsonFormate和@DateTimeFormate区别和用法

彻底搞懂@JsonFormate和@DateTimeFormate区别和用法

时间:2022-12-21 11:35:47浏览次数:788  
标签:Converter DateTimeFormate JsonFormate json 提交 字符串 搞懂 表单


问题

今天在使用@JsonFormate和@DateTimeFormate发现出现了非常多意想不到的问题;

如:

  • 1)使用ajax提交json数据时,明明提交的字符串是@DateTimeFormate中规定的类型却报错400;
  • 2)没写@DateTimeFormate和Converter居然也能将字符串映射到date等;
  • 3)自己编写的Converter死活不起作用(排除了springmvc一系列配置问题);

如果你也出现上面的问题那就往下看吧!

通过今天2小时翻阅源码+查看相关资料得出如下结论:

我们都知道@JsonFormate的作用是在Java实体转换成json时,指定date属性转换成字符串的规则;

但在某些情况下,前端提交普通字符串到后端映射到date属性上同样适用,也就是说,某些情况下,@JsonFormate代替了Converter的作用

准备如下实体类:

彻底搞懂@JsonFormate和@DateTimeFormate区别和用法_Json转换

正题开始

  • @JsonFormate:提交json(application/json)有效,表单(application/x-www-form-urlencoded)提交无效;
  • @DateTimeFormate:json提交无效,表单提交有效;
  • 自定义Converter:json提交无效、表单提交都有效;

以上三种都没配置时:

  • 如果是json方式提交:yyyy-MM-dd格式的字符串提交能够被Date接收
  • 如果是表单方式提交:yyyy/MM/dd格式的字符串提交能够被Date接收

  • 当同时配置了Converter和@DateTimeFormate时:表单提交一定会使用Converter来进行转换,不会使用@DateTimeFormate

因此我们一般这样配置就行了:

彻底搞懂@JsonFormate和@DateTimeFormate区别和用法_springmvc_02

针对于之前的问题解决

  • 问题一):使用ajax提交json数据时,明明提交的字符串是@DateTimeFormate中规定的类型却报错400;
  • 原因:@DateTimeFormate不可以解决json提交;
  • 问题二):没写@DateTimeFormate和Converter居然也能将字符串映射到date等;
  • 原因:使用了​​yyyy-MM-dd​​​格式并且是json提交,使用了​​yyyy/MM/dd​​格式提交并且是表单提交;
  • 问题三):自己编写的Converter死活不起作用(排除了springmvc一系列配置问题);
  • 原因: 是json提交方式(Converter只能解决表单提交)

具体测试的话,就交给大家自行测试了,本章不作讲解;


标签:Converter,DateTimeFormate,JsonFormate,json,提交,字符串,搞懂,表单
From: https://blog.51cto.com/u_15919174/5959177

相关文章

  • 一文搞懂flex:0,1,auto,none
    本文参考了张鑫旭大大的文章,和阮大大的flex布局,部分图片和段落结构一致,仅作为个人总结,侵权删。flex属性介绍平时在项目中Flex布局的使用频率非常高,但是对于flex的几个......
  • 搞懂“人工智能”、“机器学习”、和“深度学习”三者之间的关系
    搞懂“人工智能”、“机器学习”、和“深度学习”三者之间的关系“人工智能”的概念被首次提出至今,已经历超过半个世纪了。人工智能通常可分为弱人工智能和强人工智能两......
  • 指针都没搞懂,还能算得上 C++ 老司机?
    在工业界,有这样一个规律:“但凡能用其他语言的都不会用C++,只能用C++的必然用C++。”但是,C++的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针,内存泄露等bug,包......
  • 一文带你搞懂java中的变量的定义是什么意思
    前言在之前的文章中,壹哥给大家讲解了Java的第一个案例HelloWorld,并详细给大家介绍了Java的标识符,而且现在我们也已经知道该使用什么样的工具进行Java开发。那么接下来,壹哥......
  • 5分钟带你彻底搞懂async底层实现原理!
    ES2017标准引入了async函数,使得异步操作变得更加方便。async函数是什么?一句话,它就是Generator函数的语法糖。研究async的原理,就必须先弄清楚Generator是个啥。......
  • 彻底搞懂JavaScript防抖与节流
    今天为大家带来一篇JS重难点的知识体系,这也是前端高薪必备的重难点知识,而且防抖与节流在各大企业前端面试过程中经常会考到的高频面试题! 为了更好的帮助大家理解防抖......
  • 01-彻底搞懂java的值传递
    01-彻底搞懂java的值传递在java的参数传递中,只有一种情况,就是值传递值传递指的是在方法中,会将原始变量拷贝一份出来,进行处理基本数据类型基本数据类型值就保存在变量......
  • 一文搞懂 Redis 架构演化之路
    作者:ryetan,腾讯CSIG后台开发工程师现如今Redis变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用Redis时,有没有思考过,Redis到底是如何稳定、高性能地提供服务......
  • 三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》
    注:本系列教程需要对应JavaScript、html、css基础,否则将会导致阅读时困难,本教程将会从ECharts的官方示例出发,详解每一个示例实现,从中学习ECharts。ECharts官方示例:h......
  • 【转载】一步步搞懂MySQL元数据锁(MDL)
    某日,路上收到用户咨询,为了清除空间,想删除某200多G大表数据,且已经确认此表不再有业务访问,于是执行了一条命令‘deletefrombigtable’,但好长时间也没删完,经过咨询后,获知d......