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);
    }

}
posted @ 2012-09-16 13:17  ×jokey  阅读(479)  评论(0编辑  收藏  举报