Struts2實現自定義轉換器和全局類型轉換器

在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

發佈了89 篇原創文章 · 獲贊 13 · 訪問量 81萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章