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

相關文章
相關標籤/搜索