zoukankan      html  css  js  c++  java
  • Struts2中自定义类型转换器

    package converter;
    
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    import bean.Point;
    
    /**
     * 自定义类型转换器步骤 :
     *  1,创建转换器类,封装转换操作(String<->自定义类型)
     *    1)实现TypeConveter接口
     *    2)继承自DefaultTypeConverter类
     *    3)继承自StrutsTypeConveter抽象类
     *  2,注册转换器
     *        全局转换器
     *        可转换所有Action中属性值。
     *        在src下创建xwork-conversion.properties
     *        内容:类型名=转换器全路径名
     *     局部转换器:
     *        为某一Action中属性值转换。
     *        action类同包中:
     *          Action类名-conversion.properties
     *          内容:属性名=转换器全路径名 
     *
     */
    public class PointConverter extends StrutsTypeConverter{
        /**
         * String->Object
         * @param val 字符串数组,其存储客户端请求参数
         */
        public Object convertFromString(Map context, String[] val, Class toType) {
            //获取客户端提交的坐标字符串
            String pointStr = val[0];
            //将字符串转换为Point对象
            int x = Integer.parseInt(pointStr.split(",")[0]);
            int y = Integer.parseInt(pointStr.split(",")[1]);
            Point p = new Point();
            p.setX(x);
            p.setY(y);
            return p;
        }
        /**
         * Object->String
         */
        public String convertToString(Map context, Object object) {
            Point p = (Point)object;
            return "["+p.getX()+","+p.getY()+"]";
        }
    
    }
    package converter;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    import com.opensymphony.xwork2.conversion.TypeConversionException;
    
    /**
    *String<->Date
    **/
    public class DateConverter extends StrutsTypeConverter{
    
        private DateFormat[] dfs = {
                new SimpleDateFormat("yyyy-MM-dd"),
                new SimpleDateFormat("yyyy年MM月dd日"),
                new SimpleDateFormat("yyyy.MM.dd"),
                new SimpleDateFormat("MM/dd/yyyy")
        };
        
        public Object convertFromString(Map arg0, String[] val, Class arg2) {
            String dateStr= val[0];
            for(int i=0;i<dfs.length;i++) {
                try {
                    return dfs[i].parse(dateStr);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            throw new TypeConversionException();
        }
    
        public String convertToString(Map arg0, Object object) {
            Date date = (Date)object;
            return dfs[0].format(date);
        }
    
    }
  • 相关阅读:
    C 语言模拟 C++ 的多态(利用指针函数)
    emplace_back 使用零拷贝添加元素验证
    const char*和char* 以及string的相互转化.md
    strcpy和memcpy用法(待完善测试用例)
    结构体的比较
    引用在汇编层次上面的解释
    信息安全管理33_防病毒管理策略
    信息安全管理32_通用安全管理checklist
    信息安全管理31_信息安全符合性管理策略
    信息安全管理30_运行管理checklist
  • 原文地址:https://www.cnblogs.com/cnjava/p/2687426.html
Copyright © 2011-2022 走看看