• 自定义类型转换器


    一:自定义类型转换器

    java.util.Date类型的属性可以接收格式为2009-07-20的请求参数值。但如果我们需要接收格式为20091221的请求参数,我们必须定义类型转换器,否则struts2无法自动完成类型转换。

    public class HelloWorldAction {
        private Date createtime;
    
        public Date getCreatetime() {
            return createtime;
        }
    
        public void setCreatetime(Date createtime) {
            this.createtime = createtime;
        }
    }
    
    public class DateConverter extends DefaultTypeConverter {
                    @Override  public Object convertValue(Map context, Object value, Class toType) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        try { 
            if(toType == Date.class){//当字符串向Date类型转换时
                String[] params = (String[]) value;// Request.getParameterValues() 
                return dateFormat.parse(params[0]);
            }else if(toType == String.class){//当Date转换成字符串时
                Date date = (Date) value;
                return dateFormat.format(date);
            }
        } catch (ParseException e) {}
        return null;
        }
    }

    将上面的类型转换器注册为局部类型转换器:

    在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:

    属性名称=类型转换器的全类名

    对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:

    createtime= cn.itcast.conversion.DateConverter

    二:自定义全局类型转换器

    将上面的类型转换器注册为全局类型转换器:

    在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:

    待转换的类型=类型转换器的全类名

    对于本例而言, xwork-conversion.properties文件中的内容为:

    java.util.Date= cn.itcast.conversion.DateConverter

  • 相关阅读:
    【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改
    《Unity3D》通过对象池模式,管理场景中的元素
    NGUI制作 《九宫格》 图片
    NGUI混合FingerGesture《卷二》分离触摸事件
    js的各种获取大小
    sass基础
    js面向对象开发基础
    正则表达式(进阶篇)
    正则表达式(基础篇)
    jquery源码学习(三)—— jquery.prototype主要属性和方法
  • 原文地址:https://www.cnblogs.com/feimo/p/2943651.html
Copyright © 2020-2023  润新知