Struts2學習筆記
第七記:自定義類型轉換器(以時間類型轉換器爲例)
1、局部類型轉換器
1-1:遵循時間規範的字符串自動類型轉換
如:UserAction中的時間
public class UserAction{
private Date today;
public void setToday(Date today){
this.today=today;
}
public Date getToday(){
return this.today;
}
public String printDate(){
System.out.println(this.getToday());
return "SUCCESS";
}
}
若struts.xml中UserAction的別名是users,那麼它的訪問路徑是users!printDate.action?today=2012-7-22。
注意:若today=20120722這不能通過自動類型轉換,程序判定today爲String類型而不是Date類型。
1-2:String類型和Date類型匹配策略
例如:這裏存在一個DateConverter
public class DateConverter extends DefaultTypeConverter{
@override
public Object convertvalue(Map<String,Object> context,Object value, Class toType){
SimpleDateFormat sdf=new SimpleDateFormat ("yyyyMMdd");
try{
if(toType==Date.class){
String [] params=String [] | value;
return sdf.parse(params[0]);
}else if(toType==Date.class){
Date date=(Date)value;
return sdf.format(date);
}
}catch(Exception e){ }
return null;
}
}
註冊Action對應的轉換器的屬性文件:規則ActionName-conversion.properties
如:UserAction-conversion.properties
文件內容:如today=com.xxxx.DateConverter#key是要轉換的字段,value是類型轉換器的路徑
2、全局類型轉換器
此時的屬性文件改成:xwork-conversion.properties
如定義所有的時間類型轉換器都通過DateConverter,則:
java.utils.Date=com.xxxx.DateConverter