spring配置ConverterFormatter日期转换器

Posted FaithZX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring配置ConverterFormatter日期转换器相关的知识,希望对你有一定的参考价值。

最近有点恶补spring的嫌疑,然后学了一点知识点纪录在此。

往往在项目中我们会遇到前端页面输入一个日期类型的字符串传递到后端后我们需要去做转换。甚至在传递的过程中就会报错。

Spring有一个一劳永逸的办法,配置好按照自己的规则转换后就不需要再java后端继续转换了

需要spring的jar可以到spring官方网站去下载。

1.首先第一种 convertor转换器

package com.converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

public class StringDate implements Converter<String, Date>{

    // 日期转换格式
    private String pattern;
    // 构造函数
    public StringDate(String pattern) {
        super();
        this.pattern = pattern;
    }

    @Override
    public Date convert(String arg0) {  
        //  yyyy-MM-dd 
        SimpleDateFormat sd = new SimpleDateFormat(pattern);
        try {
            return sd.parse(arg0);
        } catch (ParseException e) {
            //e.printStackTrace();
            throw new IllegalAccessError("日期转换出错!!");
        }
    }

}

需要在springMVC-servlet.xml配置文件中配置一下内容  (springMVC-servlet文件具体的可以查看我的上一篇文章 springMVC+springJDBC+mysql注解模式)

<!-- 日期转换工厂 -->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.converter.StringDate">
                    <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>
                </bean>
            </list>
        </property>
    </bean>

 

 


2.第二种方式 Formatter转换器

package com.converter2;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.springframework.core.convert.converter.Converter;
import org.springframework.format.Formatter;


/**
 * 日期类型转换器
 * @author Administrator
 *
 */
public class StringDate2 implements Formatter<Date>{

    // 日期转换格式
    private String pattern;
    private SimpleDateFormat sd;
    
    // 构造函数
    public StringDate2(String pattern) {
        super();
        this.pattern = pattern;
        sd = new SimpleDateFormat(pattern);
    }
    
    @Override
    public String print(Date object, Locale locale) {
        //加上这句话  就需要按照日期规范去转   类似1999-15-15就会报错
        sd.setLenient(false);
        return sd.format(object);
    }
    @Override
    public Date parse(String text, Locale locale) throws ParseException {
        sd.setLenient(false);
        return sd.parse(text);
    }


}

需要在springMVC-servlet.xml配置文件中配置一下内容

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="formatters">
            <list>
                <bean class="com.converter2.StringDate2">
                    <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>
                </bean>
            </list>
        </property>
    </bean>


以上方式只要在页面输入指定格式 value="yyyy-MM-dd" 的字符串然后发送请求并且将参数带到controller中spring就会自动转换为日期类型

 



以上是关于spring配置ConverterFormatter日期转换器的主要内容,如果未能解决你的问题,请参考以下文章

Spring中Quartz的配置

Spring Boot节省了配置吗?

spring定时器如何配置???

Eclipse下如何配置spring应用

Spring IOC配置问题

如何在spring中配置定时任务