具體來講,整個過程能夠分爲兩個步驟: 1.實現TypeCoverter接口,或者繼承DefaultTypeConverter實現類(該類實現了TypeCoverter接口),經過繼承該實現類來實現本身的類型轉換器。重寫convertValue方法便可。爲了簡化類型轉換器的實現,Struts2提供了一個StrutsTypeConverter抽象類,這個抽象類是DefaultConverter的子類 2.給須要進行轉換的類或屬性指定類型轉換器 根據做用域的不一樣能夠將配置文件分爲兩種:類級別和全局級別。 A、註冊局部類型轉換器:僅僅對某個Action的屬性起做用。 B、註冊全局類型轉換器:對全部Action的特定類型的屬性都會生效。 類級別時,左邊是類中需進行類型轉換的屬性的名稱;全局級別時,左邊是需進行類型轉化的類型的全名。 局部類型轉換配置文件遵循以下的命名規則: ClassName-conversion.properties 內容相似:Notice.createtime=com.NoticeConverter 全局類型轉換器 xwork-conversion.properties java.util.Date=com.DateConverter org.apache.struts.action2.util.StrutsTypeConverter,它能幫助咱們方便的編寫一個類型轉換器。這個類提供了兩個抽象方法,以便咱們將目標類型轉換爲String或者將String轉換爲目標類型。這兩個方法是convertFromString和convertToString public class NoticeConverter extends StrutsTypeConverter { private static final Log logger = LogFactory.getLog(NoticeConverter.class); public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String[] ACCEPT_DATE_FORMATS = { "yyyy-MM-dd HH:mm:ss", DEFAULT_DATE_FORMAT }; public OeBaseNoticeConverter() { } @SuppressWarnings("unchecked") public Object convertFromString(Map context, String[] values, Class toClass) { if(logger.isDebugEnabled()){ logger.debug("converFromString...."); if(values!=null){ logger.debug("convert from :" + values[0]); } } if (values[0] == null || values[0].trim().equals("")) return null; String dateStr=values[0]; dateStr=dateStr.replace("T", " "); try{ return DateUtils.parseDate(dateStr, ACCEPT_DATE_FORMATS); }catch(Exception ex){ logger.debug("parse date error:"+ex.getMessage()); } return null; } @SuppressWarnings("unchecked") public String convertToString(Map context, Object o) { if (o instanceof Date) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return format.format((Date) o); } catch (RuntimeException e) { logger.error(e.getMessage()); return ""; } } return ""; } }