springmvc Date類型轉換


有時候我們會碰到這么一個問題,有一個實體類,里面有一個Date類型的數據,jsp頁面傳遞的時間參數是String的,這就導致無法對應,springmvc無法幫我們自動封裝參數到實體類中了,這里我解決的方法有兩種:

1.是自定義一個轉換器,實現Converter<S,T>接口,S:代表要進行轉換的參數的類型,T:代表轉換后的類型

2.利用@DateTimeFormat注解

1 簡單測試代碼如下:DateConverter類中conver()方法將字符串轉化為自定義的時間類型,當前台頁面發送請求中有參數為string類型,而在后台接收時用Date類型直接接收,因為轉換器會幫我們轉化

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

public class DateConverter implements Converter<String, Date> {
    private static final SimpleDateFormat dateF=new SimpleDateFormat("yyyy-MM-dd hh:mm");
    /**
     * Converter為一個接口。該接口有很多實現類
     * 比如 StringToBooleanConverter   string自動轉化為Boolean
     * */
    @Override
    public Date convert(String s) {
        Date date=null;
        if(CheckUtil.isNotEmpty(s)){
            try {
                date=dateF.parse(s);
            } catch (ParseException e) {
                new Throwable("字符串轉換時間異常");
            }
        }
        return date;
    }
}

該轉換器如果要實現,還需要將器注冊到mvc注解驅動中,讓注解驅動的conversion-service使用我們自定義的

 <bean id="conversionServiceFactoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.paic.utils.converter.DateConverter"></bean><!--將自定義的時間轉換注入進去-->
            </list>
        </property>
    </bean>
    <!--開啟springmvc注解的支持-->
    <mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>

由於set對象時是加到了list中,所以並不影響其他的之前已經存在的類型轉換實現類

簡單測試代碼如下,實體類上加@DateTimeFormat

public class Product {
    private String id; // 主鍵
    private String productNum; // 編號 唯一
    private String productName; // 名稱
    private String cityName; // 出發城市
    @DateTimeFormat(pattern="yyyy-MM-dd hh:ss")
    private Date departureTime; // 出發時間
    private String departureTimeStr;
    private double productPrice; // 產品價格
    private String productDesc; // 產品描述
    private Integer productStatus; // 狀態 0 關閉 1 開啟
    private String productStatusStr;

兩中方式的區別在於第一種在項目中適用,第二種在當前實體類中適用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM