stuts2中的類型轉換器

在進行註冊用戶或者其他操作的時候,由於國家地區等的不同,我們需要填寫的日期,我們的寫法是yyyy-MM-dd,但是國外的是dd-MM-yyyy,這就存在差別。才存放到數據庫的時候可能會出現問題。所有需要進行類型轉換。

類型轉換的方式有兩種,一種是局部的類型轉換,一種是全局的類型轉化,一下先編寫一個時間日期的類型轉的工具。

package com.zeroyoung.web.convert;

import org.apache.struts2.util.StrutsTypeConverter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import java.util.Date;
/**
 *把表單中的MM/dd/yyyy格式的數據轉成日期類型
 *   把數據庫中的本地日期格式,轉成MM/dd/yyyy形式輸出
 *  Created by yanglin on 2016/11/2.
 */

//第一步:編寫一個類,繼承自StrutsTypeConverter,實現convertFromString,convertToString抽象方法
public class DateConvert extends StrutsTypeConverter {
    private DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
    //把字符串轉化爲日期類型
    public Object convertFromString(Map map, String[] strings, Class aClass) {
        if (strings ==null || strings.length==0){
            return null;
        }
        String date = strings[0];

        if(aClass==java.util.Date.class){
            try {
                Date parse = format.parse(date);
                System.out.println(parse);
                return parse;
            } catch (ParseException e) {
                e.printStackTrace();
                return null;
            }
        }
        return null;
    }

    //把日起格式轉換成字符串
    /**
     *
     * @param map
     * @param o :要轉換的數據
     * @return
     */
    public String convertToString(Map map, Object o) {
        if(o instanceof Date){
            Date date = (Date)o;
            return format.format(date);
        }
        return null;
    }
}

從上面可以看出,我們需要轉換一個數據類型需要繼承struts2當中的StrutsTypeConverter這個類
而這個類的父類是com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter,DefaultTypeConverter是實現了import com.opensymphony.xwork2.conversion.TypeConverter;TypeConverter當中就一個convertValue()但是有6個參數,DefaultTypeConverter把其實現了之後將參數減少到三個,StrutsTypeConverter把其進一步的簡化,然後形成了兩個參數的方法。主要是將一個類型轉化爲String,然後String再轉化爲原來的類型。

局部類型轉換:
在javabean的目錄下javabean的名稱-conversion.properties

#局部類型轉換器文件名的命名規範:javabean的名稱-conversion.properties
#局部類型轉換器聲明,聲明方式是以使用的屬性名稱作爲key,以類型轉換器的全類名作爲value
birthday=com.itheima.web.converter.MyTypeConvertor

全局類型轉化:
在src目錄下建立一個xwork-conversion.properties

#全局類型轉換器文件名的命名規範:xwork-conversion.properties。文件放到類路徑的根路徑
#全局類型轉換器聲明,聲明方式是以使用的數據類型(全類名)作爲key,以類型轉換器的全類名作爲value
java.util.Date=com.itheima.web.converter.MyTypeConvertor
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章