springmvc接受日期参数_SpringMvc 请求中日期类型参数接收一二事儿

本文主要探讨了在Spring MVC中如何处理日期类型的请求参数。通过分析不同输入格式的影响,指出Spring MVC默认使用RequestParamMethodArgumentResolver解析器,并依赖ObjectToObjectConverter进行转换。当日期格式符合特定模式时,如'2018/02/21 20:36:00',可以成功转换为Date。此外,介绍了@DateTimeFormat注解的使用,以及在不同JDK版本下的支持情况。文章还讨论了转换过程,包括Converter的使用和日期到其他类型(如Calendar、Long)的转换。
摘要由CSDN通过智能技术生成

首先说明:以版本为Spring 4.3.0为测试对象; 开启

测试场景一:请求中含有date属性,该类型为日期类型,SpringMvc采用@RequestParam来接受作为方法入参。

代码很简单,第一反应是不能将字符串的date属性赋给d;

先尝试输入当前日期 2019-02-21 20:30 并提交,当然现在大多都是前端日期控件来选择日期并按照一定类型提交到后台的;

查看报错信息: 没能够将字符串类型转换需要的日期类型

其实,不是这样的,当输入日期为   2018/02/21 20:36:00 这样的,你会发现又可以将字符串转为日期类型

原因我DEBUG简单分析如下:因为@RequestParam注解决定了使用 RequestParamMethodArgumentResolver这个参数解析器,mvc-annotation注册的参数类型转换器 并没有

String—>Date类型的转换器 , 但是用到了ObjectToObjectConvert这个转换器;下图贴一下其 类型转换的convert 方法,就是尝试去寻找 目标类 Date 构造方法

即目标类构造方法需要唯一含有String类型的构造方法,然后实例化 该目标类,  没找到就会抛出异常;

因为Date有个虽然过时、但是确实是String类的构造方法:至于parse方法就是将String字符串转为long类型,支持格式有常见的几种:

2018/02/21 20:36:00 或者 2019/02/21 或者 02/21/2019 20:58:00

具体看是否支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值