一、java.util.Date類型的屬性能夠接受格式爲2009-07-20的請求參數,但若是咱們須要接收格式爲20091221的請求參數,咱們必須定義類型轉換器,不然struts2沒法自動完成類型轉換。java
import java.util.Dateide
public class HelloWorldAction()this
{orm
private Date createtime;字符串
public Date getCreatetime()get
{it
return createtime;io
}ast
public void set Createtime(Date createtime)form
{
this.createtime = createtime;
}
}
public class DateConverter extends DefaultTypeConverter
{
@Override public Object converValue(Map context, Ovject value,Class to Type)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try{
if(to Type == Date.class)
{
//當字符串向Date類型轉換時
String[] params = (String) value;//Request getParameterValues()
return dateFormat.parse(params[0]);
}
else if (to Type == String.class)
{
//當Date轉化成字符串時
Date date = (Date) value;
return dateFormat format(date);
}
}catch(ParseExceprion e)
{
return null;
}
}
將上面的類型轉換器註冊爲局部類型轉換器
在Action類所在的包下放置ActionClassName-conversion .properies文件,ActionClassName是Action的雷鳴,後面的-conversion.properties是固定寫法,對於本例而言,文件的名稱爲HelloWorldAction-comversion.properties。
在properties文件中的內容爲:
屬性名稱=類型轉換器的全類名
對於本例而言,HelloWorldAction-comversion.properties文件中的內容爲:createtime=cn.itcase.conversion.DateConverter.
}
二、將上面的類型轉換器註冊爲全局類型轉換器:
在WEB-INF/CLASSES下放置xwork-conversion.properties文件。在properties文件中的內容爲:
待轉換的類型=類型轉換器的全類名
對於本例而言,xwork-conversion.properties文件中的內容爲:
java.util.Date=cn.itcast.conversion.DateConverter