Struts2 自定义日期类型转换

来源:互联网 发布:千机伞淘宝 编辑:程序博客网 时间:2024/04/28 21:58

xwork-conversion.properties文件,程序自动加载web.xml,根据web.xml中的配置,自动找到struts.xml文件,此时如果struts.xml同级目录存在xwork-conversion.properties文件,程序就会自动加载该文件。

xwork-conversion.properties它是一个格式转换器。

例:

xwork-conversion.properties文件中配置:

java.util.Date=com.xxx.DateConverter

DateConvert.java:

package com.xxx;import java.text.DateFormat;   import java.text.ParseException;   import java.text.SimpleDateFormat;   import java.util.Date;   import java.util.Map;     import org.apache.log4j.Logger;   import org.apache.struts2.util.StrutsTypeConverter;  public class DateConverter extends StrutsTypeConverter {         private static final Logger log = Logger.getLogger(DateConverter.class);       public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";              public static final DateFormat[] ACCEPT_DATE_FORMATS = {               new SimpleDateFormat(DEFAULT_DATE_FORMAT),               new SimpleDateFormat("yyyy年MM月dd日"),               new SimpleDateFormat("yyyy/MM/dd") };            public DateConverter() {       }             @Override      public Object convertFromString(Map context, String[] values, Class toClass) {           if (values[0] == null || values[0].trim().equals(""))               return null;           for (DateFormat format : ACCEPT_DATE_FORMATS) {               try {                   return format.parse(values[0]);               } catch (ParseException e) {                   continue;               } catch (RuntimeException e) {                   continue;               }           }           log.debug("can not format date string:" + values[0]);           return null;       }         @Override      public String convertToString(Map context, Object o) {           if (o instanceof Date) {               SimpleDateFormat format = new SimpleDateFormat(                       DEFAULT_DATE_FORMAT);               try {                   return format.format((Date) o);               } catch (RuntimeException e) {                   return "";               }           }           return "";       }     }

JSP页面使用Struts标签时,如果属性的类型为日期,会自动转换成字符串显示,不用再使用s:date标签了。

例:

<s:textfield id="bean.model.changeDate" name="bean.model.changeDate"></s:textfield>
其中,changeDate为日期格式,此时输出的结果应该是:

<input type="text" name="bean.model.changeDate" value="2017-07-11" id="bean.model.changeDate"/>





原创粉丝点击