struts2类型转换器

具体来讲,整个过程能够分为两个步骤: 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 "";     } }
相关文章
相关标签/搜索