代碼解說:
1、引入參數中的toType表示的是目標類型(是字符串類型還是Date類型):
當客戶端string提交到DateConvert這個類時候(即:toType==Date.class),value指的是textfield中填寫的字符串。
對if(Date.class==toType)過程解釋:
(1)String[] params = (String[])value;---------------將value顯示轉化爲字符數組後賦值爲數組str[];
(2)dateString = params[0];//獲取日期的字符串 -------取出str[]的第一個元素
2、配置屬性文件使得讓date屬性由DateConvert處理:
(1)在和要被convert的類的同目錄下新建一個文件:
Action-conversion.properites
Action --------要轉換的屬性所在的類的類名
-conversion.properies-----固定格式
(2)填寫屬性文件內容:
date=ouc.sei.trace.util.DateConvert
date--------具體要轉換哪一個屬性
ouc.sei.trace.util.DateConvert-----具體用那個convert類來轉換date
注意:如果對多個屬性進行轉換可以添加多個如date=ouc.sei.trace.util.DateConvert形式的內容。
3、程序運行流程
運行流程分兩步:
一、字符串字段被轉化爲對應數據類型字段上傳到action中;
二、對應字段被轉化爲字符串類型字段顯示在輸出頁面;
第一步:input.jsp提交表單---->進入表單提交的action,在此action裏接受表單穿過來的各個字段,是基本數據類型字段struts2會自動進行對其轉換,如果遇到對象類型字段則進入此action所在的目錄查找轉換配置文件(Action-convertion.properties),在轉換配置文件中查找處理此對象數據類型的類(DateConverter.java)---->對象類型轉化類將form提交過來的與對象類型相關的字符串轉化爲對象實例->轉化後的對象實例被設置(set)到action中;
第二步:action中的衆多字段裏,如果是基本數據類型字段的struts2會自動轉換爲字符串類型字段發送到輸出頁面(out.jsp), 如果是對象類型字段則會進入action中找轉換配置文件(Action-convertion.properties),在轉換配置文件中查找處理此對象數據類型的類(DateConverter.java)---->對象類型抓換類將action中的對象類型字段轉換爲相應字符串字段---->轉換後的字符串實例被get到輸出頁面。
4、定義全局類型轉換
上面所演示的是局部類型轉換方式,假如有四個action,分別爲Action1、Action2、Action3、Action4,每個Action裏面都有一個相同的date屬性需要轉換,所以必須在net.javaw.action包下面創建四個屬性文件指定每個Action都需要DateConverter類進行轉換,即:
Action1-coversion.properties,ction2-coversion.properties, Action3-coversion.properties,Action4-coversion.properties
如果更多類需要轉換,顯然這種方式比較累人,這種情況可以考慮使用全局類型轉換。
配置步驟:
(1)在src目錄下創建全局屬性文件,文件名爲:
xwork-conversion.properties 文件名是固定不變的。
(2)全局屬性文件內容:
net.javaw.bean.Date=ouc.sei.trace.util.DateConverter
等號左邊是要轉換的類所在的包名,右邊是具體用那個convert類來轉換date。