SpringMVC自定义日期转换器方式

 更新时间:2024年07月08日 10:51:49   作者:xuebanub1  
这篇文章主要介绍了SpringMVC如何自定义日期转换器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、问题

问题

  • 当日期传参格式为2023/5/13时,因为这是Spring默认日期格式,所以能解析
  • 当日期传参格式为2023-5-13时,因为这不是Spring默认日期格式,所以不能解析

解决方案

  • 自定义日期格式

二、实现Converter<S,T>接口

1.该接口位置

org.springframework.core.convert.converter.Converter

2.创建DateConverter实现类

实现convert方法

public class DateConverter implements Converter<String,Date> {
    @Override
    public Date convert(String s) {
        //将日期字符串转换为日期对象返回
        //自定义日期格式
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            //转换
            date = sf.parse(s);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        //将日期对象返回
        return date;
    }
}

三、在Spring-MVC.xml配置文件中声明转换器

1.设置id

conversionService

2.设置class

org.springframework.context.support.ConversionServiceFactoryBean

3.配置converters属性

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!--配置converters属性-->
        <property name="converters">
            <list>
                <!--指向DateConverter实现类-->
                <bean class="com.jd.converter.DateConverter"></bean>
            </list>
        </property>
    </bean>

四、在mvc注解中引用转换器

<!--mvc的注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
  • conversion-servic的值为第三步设置的id(即转换器的id)

五、测试

1.接收日期参数并打印

@Controller
public class UserController {
    @RequestMapping(value = "/quick13")
    @ResponseBody
    public void save13(Date date){
        System.out.println(date);
    }
}

2.在网页输入url传参

  • 参数:date=2023-5-13

http://localhost:8080/quick13?date=2023-5-13

  • 打印结果

Sat May 13 00:00:00 CST 2023

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入解析Java中volatile的底层原理

    深入解析Java中volatile的底层原理

    这篇文章主要介绍了深入解析Java中volatile的底层原理,volatile关键字用于保证变量的可见性和禁止指令重排序,即当一个线程修改了volatile变量的值,其他线程能够立即看到这个变量的最新值,而不是使用缓存中的旧值,需要的朋友可以参考下
    2023-07-07
  • 最详细的文件上传下载实例详解(推荐)

    最详细的文件上传下载实例详解(推荐)

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • Java 栈和队列的相互转换详解

    Java 栈和队列的相互转换详解

    栈和队列,严格意义上来说,也属于线性表,因为它们也都用于存储逻辑关系为 "一对一" 的数据,但由于它们比较特殊,因此将其单独作为一章,做重点讲解
    2022-02-02
  • SpringBoot生成PDF的五种实现方法总结

    SpringBoot生成PDF的五种实现方法总结

    这篇文章主要介绍了SpringBoot生成PDF的五种实现方法,在开发中经常会遇到需要进行对一些数据进行动态导出PDF文件,然后让用户自己选择是否需要打印出来,这篇文章我们来介绍五种实现方法,需要的朋友可以参考下
    2024-10-10
  • Java如何正确的使用wait-notify方法你知道吗

    Java如何正确的使用wait-notify方法你知道吗

    这篇文章主要为大家详细介绍了Java如何正确的使用wait-notify方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java线程池使用AbortPolicy策略

    Java线程池使用AbortPolicy策略

    这篇文章主要介绍了 Java线程池使用AbortPolicy策略,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • idea不使用maven如何将项目打包

    idea不使用maven如何将项目打包

    使用IDEA 2021版本,不借助Maven进行打WAR包的步骤是:首先点击Project Structure,然后点击Artifacts,接着选择需要的打包类型,设置好包的名称,最后进行打包,这种方法适用于不使用Maven进行项目管理的情况
    2024-09-09
  • mybatis-plus添加数据时id自增问题及解决

    mybatis-plus添加数据时id自增问题及解决

    这篇文章主要介绍了mybatis-plus添加数据时id自增问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java8实战之Stream的延迟计算

    Java8实战之Stream的延迟计算

    JDK中Stream的中间函数如 filter(Predicate super T>)是惰性求值的,filter并非对流中所有元素调用传递给它的Predicate,下面这篇文章主要给大家介绍了关于Java8实战之Stream延迟计算的相关资料,需要的朋友可以参考下
    2021-09-09
  • springboot加载配值文件的实现步骤

    springboot加载配值文件的实现步骤

    本文主要介绍了springboot加载配值文件的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03

最新评论