在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