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);
        }
    
    }
  • 相关阅读:
    "Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
    EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字
    yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>
    Emgu.CV/opencv 绘图 线面文字包括中文
    5.9 HTML5 新增表单控件 ---不是特别重要
    5.8 HTML5新结构标签
    5.8 HTML5新结构标签 ---不是特别重要
    5.7 CSS浏览器前缀
    5.6 CSS3 animation动画
    5.5 CSS3 transform变换
  • 原文地址:https://www.cnblogs.com/cnjava/p/2687426.html
Copyright © 2011-2022 走看看