Struts自定義類型轉換器

自定義類型轉換器

在處理某些類型時,我們需要自定義類型轉換,如:日期(Date)。

轉換器類

(1)繼承DefaultTypeConverter類

示例如下:

編寫類型轉化器DateConverter(可以自己定義名稱),需要繼承DefaultTypeConverter類。

publicclass DateConverter extends DefaultTypeConverter{

    @Override

    public Object convertValue(Map<String, Object> context, Object value, Class toType) {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

        try {

            if(toType == Date.class){//當字符串向Date類型轉換時

                String[] params = (String[]) value;// request.getParameterValues()

                return dateFormat.parse(params[0]);

            }elseif(toType== String.class){//Date轉換成字符串時

                Date date = (Date) value;

                return dateFormat.format(date);

            }

        } catch (ParseException e) {}

        returnnull;

    }

}

(1)繼承StrutsTypeConverter類

繼承StrutsTypeConverter類通常需要重寫兩個方法:convertFromString()convertToString()方法。

convertFromString()方法用於將字符串轉化爲指定類型convertToString()方法用於將指定類型轉化爲字符串。

示例如下:

publicclass DateConverter2 extends StrutsTypeConverter {

    private SimpleDateFormat  dateFormat = new SimpleDateFormat("yyyy_MM_dd");

    @Override

    public Object convertFromString(Map context, String[] values, Class toType) {

        if(toType==Date.class){

            try {

                return dateFormat.parse(values[0]);

            } catch (ParseException e) {

                e.printStackTrace();

            }

        }

        returnnull;

    }

    @Override

    public String convertToString(Map context, Object obj) {

        Date date=(Date)obj;

        return dateFormat.format(date);

    }

}

 

類型轉換器註冊

局部類型轉換器

在Action類所在的目錄下創建一個ActionClassName-conversion.properties文件,ActionClassName是Action的類名,後面的-conversion.properties是固定寫法,在properties文件中的寫法如下:

createTime=com.chen.converter.DateConverter

全局類型轉換器

可以將上面定義的日期類型轉化器註冊爲全局類型轉換器,使其在整個項目中都起作用。

(1)在src目錄下創建xwork-conversion.properties文件;

(2)在properties文件中的內容爲:

待轉換的類型=類型轉換器的全類名

示例如下:

java.util.Date=com.chen.converter.DateConverter


發佈了119 篇原創文章 · 獲贊 57 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章