Struts2自定义日期转换器

来源:互联网 发布:数据画像 编辑:程序博客网 时间:2024/05/01 15:23

 

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的自定义转换器。