struts2的類型轉換,對於8個原生數據類型以及Date,String 等常見類型,struts2能夠使用內建的類型轉換器實現自動的轉換,對於自定義的對象類型轉換來講,就須要咱們制定轉換類型以知足須要。
java
Struts2自定義類型轉換器分爲局部類型轉換器和全局類型轉換器spa
(1)局部類型轉換器
code
1.首先要寫一個類來繼承DefaultTypeConverter
2.而後覆蓋convertValue這個方法,在裏面進行數據轉型 ,後面詳細說明convertValue裏面轉換方法。
3.在action類所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是類名,後面的-conversion.properties是固定的寫法,orm
4.Properties文件裏面的內容爲:屬性名稱=類型轉換器的全類名對象
如 繼承
user=com.strutsdemo.UserConverter字符串
小結:源碼
對於自定義類型轉換器來講須要提供3個信息,Action的名字(ActionClassName),Action中待轉換的屬性名以及該屬性對應類型轉換器。其中,Action的名字是經過屬性文件properties 的文件名來得到的,Action的待轉換的屬性名是經過properties中的key來得到,該屬性對應的類型轉換器是經過該key對應的value來得到的。io
第2步中class
覆蓋convertValue方法裏
必須採用if else if 判斷類型,這裏以轉換經典User爲例
public Object convertValue(Map context,Object[] value,Class toTpye){ if(User.class == toType){ //從頁面向後臺轉換,這裏 ==,equals均可以 //task code }else if(String.class == toType){ //從後臺向頁面轉換後,輸出值 //task code } }
if 判斷中, value是表單提交的值
else if 判斷中,value是後臺到頁面須要轉換的值
也能夠使用struts自帶的類型轉換器strutsTypeConverter簡化類型代碼的編寫,strutsTypeConverter繼承於DefaultTypeConverter父類,而且提供2個抽象方法
convertFromStirng與converToString,分別表示從頁面的字符串轉換爲後臺對象以及從後臺對象轉換爲頁面的字符串,不須要再判斷方向。
順便提一下strutsTypeConverter源碼中,依然是if else if 判斷方向。
批量轉換
表單中提交相同name的值,能夠用批量轉換
轉換方法中都是String value[]就是能夠根據因此取到相同name提交的值。
其餘同理
(2)全局類型轉換器
若是業務需求全部的日期都要轉換,則能夠使用全局類型轉換器,只要在src根目錄下面放置xwork-conversion.properties文件,而且properties文件中的內容爲:
待轉換的類型=類型轉換器的全類名
如:java.util.Date = com.type.Converter.DateTypeConverter 便可