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

  • 相关阅读:
    vue项目使用async await 封装 axios
    vue实现预览功能(包括doc,pdf,图片,视频)
    vue中实现下载文件功能
    vue项目中加入拖放排序功能
    Vue项目中生成二维码
    position跟display、overflow、float这些特性相互叠加后会怎么样?
    localStorage使用注意
    webpack 使用总结
    cookie作用域
    语法糖的理解
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157794.html
Copyright © 2020-2023  润新知