struts2日期類型轉換


爲何要進行日期類型轉換?java

  在基於HTTP協議的web應用中,客戶端請求的全部內容(如在表單中輸入的姓名,年齡,生日,等)均均可以以文本編碼方式傳輸到服務器端,但服務器端的編程語言(如java)有着豐富的數據類型,如int,boolean,Date及自定義類型等,所以,當這些參數進入應用程序時,他們必須被轉換爲合適的服務器端編程語言的數據類型。(p116)web

何時須要自定義類型轉換器?編程

  在引入第三方jar包,集合中只有一個class文件,要自定義類型轉換器該類做爲user類的一個屬性並經過set方法注入參數時考慮自定義,不然無須考慮。服務器

Struts2自定義類型轉換器:jsp

  客戶端發送過來的數據都是以String[]的形式保存的。在struts2裏面僅僅不多的數據類型轉換支持,例如原生的數據類型。還有常見的String或者Date類型。struts沒法知道咱們會使用哪一種數據類型。因此它提供一些實現自定義類型轉換的類。編程語言

  具體的轉換過程以下:ide

1.定義一個類DataConverter編碼

  該類繼承自StrutsTypeConverter,定義了兩個抽象方法,用於不一樣的轉換方向,分別以下:spa

(1) public Object convertFromString(Map context, String[] values, Class toType) 將一個或多個字符串值轉換成指定的類型。參數context是表示OGNL上下文的Map對象,參數values是要轉換的字符串值,參數toType是要轉換的目標類型3d

(2)public String convertToString(Map context, Object obj):將指定對象轉換爲字符串,參數context是表示OGNL上下文的Map對象,參數Object是要轉換的對象

複製代碼
public class DataConverter extends StrutsTypeConverter{

    //支持轉換的多種日期格式
    private final DateFormat[]dfs=
        {
            new SimpleDateFormat("yyyy/MM/dd"),
        };
    /*
     * 將指定格式字符串轉換爲日期類型
     */
    @Override
    public Object convertFromString(Map context, String[] values, Class toType) {
        //獲取日期的字符串
        String value=(String)values[0];
        //遍歷日期支持格式,進行轉換
        for (int i = 0; i < dfs.length; i++) {
            try {
                return dfs[i].parse(value);
            } catch (Exception e) {
                continue;
            }
        }
        //若是遍歷完畢後若沒有轉換成功,代表出現 轉換異常
        throw new TypeConversionException();
    }

    /*
     *將日期轉換爲指定格式字符串
     */
    @Override
    public String convertToString(Map context, Object obj) {
        //輸出的格式是yyy-MM-dd
        return new SimpleDateFormat("yyyy/MM/dd").format(obj);
    }
複製代碼

2.建立實體類:

 

3.struts.xml配置中:

 

4.index.jsp頁面中:

 

5.配置單個類型轉換:

 首先在action包下建立:

 

 

   

 配置完單個類型轉換後,頁面展現效果如圖所示: 

6.配置全局類型轉換:

在src目錄建立xwork-conversion.properties

 

顯示效果圖:


誰不會休息,誰就不會工做。---列寧

相關文章
相關標籤/搜索