自定義類型轉換器
自定義一個時間類型的轉化器類,類必須繼承DefaultTypeConverter,並且重寫convertValue方法
public class DateConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context,Object value,Class toType) {
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMdd");
try {
if(toType==Date.class)
{
//從url或表單獲取提交的元素可能是複選框的提交,所以需要使用數組來獲取
String[] params=(String[])value;
return dateFormat.parse(params[0]);
}
else if(toType==String.class)
{
Date date=(Date)value;
return dateFormat.format(date);
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
轉換器中的方法convertValue是雙向的,比如在頁面提交的時候參數value爲頁面的提交或url的參數,toType爲需要轉換的要類型,這個例子是將string類型轉換爲Date類型,當要顯示到頁面的時候value爲Date而toType爲需要轉換的類型爲string
將上面的類型轉換器註冊爲局部類型轉換器:
在Action類所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的類名,後面的-conversion.properties是固定寫法。在properties文件中的內容爲:
屬性名稱=類型轉換器的全類名
將上面的類型轉換器註冊爲全局類型轉換器:
在WEB-INF/classes下或SRC文件夾下放置xwork-conversion.properties文件。在properties文件中的內容爲:
待轉換的類型=類型轉換器的全類名
對於本例而言, xwork-conversion.properties文件中的內容爲:
java.util.Date=類型轉換器的全類名