因為頁面一般傳回action的都是String,比如日期20101110,在action接收時,如果是java.util.Date類型,就需要類型轉換。
(一)局部類型轉換器
(1)編寫類型轉換類,需要繼承DefaultTypeConverter,并重寫 Object convertValue(Map context, Object value, Class toType) 方法。其中,context即ognl中的上下文,value是從頁面傳入的參數,一般為String[],這樣對複選框checkbox,也适用。 toType為要轉換的目标類型
public Object convertValue(Map context, Object value, Class toType) {
try{
SimpleDateFormat sm = new SimpleDateFormat("yyyyMMdd");
if (toType==Date.class) {
String[] dateStr = (String[])value;
return sm.parse(dateStr[0]);
}
}catch (Exception e) {
e.printStackTrace();
}
return "";
}
(2)在action的包下面放入一個properties檔案,檔案名規範:action的class名稱-conversion.properties檔案。
birthday=cn.hp.type.converter.DateTypeConverter
(二)全局類型轉換器
在WEB-INF/classes下放置xwork-conversion.properityes檔案。
内容為
目标轉換的類型=類型轉換器的全名
java.util.Date=converter.DateTypeConverter