Struts2自定义日期转换器

 

1.   日期格式转换器

自定义日期格式转换器,可以动态调整日期格式,并更新到数据库。 

/**
 * 保存日期格式的基础类。
 *
 * @author daichen
 *
 */
public class DateConverter extends StrutsTypeConverter {
   
    /**
     * 内存中的日期格式
     */
    private String format;
   
    /**
     * 可以从数据库中加载日期格式
     */
    @PostConstruct
    public void loadFormat() {
    format = "yyyy-MM-dd";
    }
   
    @SuppressWarnings("rawtypes")
    @Override
    public Object convertFromString(Map context,String[] values, Class toClass) {
    // Pre-validate
        if (ArrayUtils.isEmpty(values) ||StringUtils.isEmpty(values[0])) {   
            return null;   
        }
       
        Date date = null;
        try {
            date = new SimpleDateFormat(format).parse(values[0]);     
        } catch (ParseException e) {     
            date = null;     
        }
        return date;
    }
 
    @SuppressWarnings("rawtypes")
    @Override    
    public String convertToString(Map context, Objecto) {
        if (o instanceof Date) {  
            return new SimpleDateFormat(format).format((Date) o);  
        }
        return StringUtils.EMPTY;   
}
 
/**
     * 更改日期格式(可以同时更新到数据库)
     * @param format
     */
    public void changeFormat(String format) {
        this.format = format;
    }
}

 

2.   全局配置文件

新建xwork-conversion.properties,并与struts.xml放在一起。此配置文件中定义的转换器是全局的,也可以定义一个指定Action的转换器。

 

java.util.Date=com.cdai.ssh.common.DateConverter

 

3.   JSP页面

<%@page
    import="com.cdai.ssh.user.vo.*"
    contentType="text/html;charset=utf-8"
%>
<%@taglib prefix="s"uri="/struts-tags"%>
 
<html>
 
    <head>
        <title>Programmer inSY</title>
    </head>
 
    <body>
   
        <s:iterator value="userList">
            <li>
                <s:property value="createdTime"/>              
            </li>
            <p>
                <s:property value="id"/>
            </p>
        </s:iterator>
   
    </body>
 
</html>
 

4.   未解决问题

4.1 配置文件位置

struts.xml和xwork-conversion.properties要放在一起,但是不放在classes根位置就会报错。

4.2 兼容Velocity

Velocity不支持Struts2的自定义转换器。

 

你可能感兴趣的:(Struts2自定义日期转换器)