在action中有個字段是birthday是date類型,當我們傳值時必須寫成1999-01-01它纔會自動類型轉換,但在有些時候有這樣的需求要寫成19990101這樣默認就不會進行自動類型轉換,這樣我們可以寫一個自定義類型轉換器,實現轉換需求。
Struts2有兩種類型轉換器:
局部:對某個action轉換類型起作用
首先要自定義類型轉換器:
public class DateTypeConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
if(toType == Date.class){//當字符串向Date類型轉換時
String[] params = (String[]) value;// request.getParameterValues()
return dateFormat.parse(params[0]);
}else if(toType == String.class){//當Date轉換成字符串時
Date date = (Date) value;
return dateFormat.format(date);
}
} catch (ParseException e) {}
return null;
}
}
進行註冊:
創建HelloWorldAction-conversion.properties文件 HelloWorldAction是要註冊的action後邊是規定寫法
文件內容是Action中哪個屬性要進行類型轉換並只向的內容轉換器:
birthday=cn.test.type.converter.DateTypeConverter
全局:對所有action轉換類型起作用
在src下創建xwork-conversion.properties文件
內容爲:java.util.Date=cn.test.type.converter.DateTypeConverter