具体来讲,整个过程能够分为两个步骤: 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 ""; } }