spring配置Converter、Formatter日期转换器

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

每每在项目中咱们会遇到前端页面输入一个日期类型的字符串传递到后端后咱们须要去作转换。甚至在传递的过程当中就会报错。java

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

须要spring的jar能够到spring官方网站去下载。sql

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注解模式)ide

<!-- 日期转换工厂 -->
    <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就会自动转换为日期类型this

相关文章
相关标签/搜索