浅谈自定义类型转换器

流程:

1.创建一个vo包,用来存放表示层的数据,并且封装成对象保存.

2.创建一个conversion包,用来存放自定义类型转换器

3.配置自定义类型转换器

   a.全局类型转换器

   b.局部Action类型转换器

 

com.sun.vo

里面存放了一个point,point 有2个属性,分别为int x,int y

 

com.sun.conversion

里面存放了一个PointConverter,该类继承了StrutsTypeConverter

package com.sun.conversion;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.sun.entity.Point;

public class PointConverter extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		String str=arg1[0];
		String point[]=str.split(",");
		Point p=new Point();
		p.setX(Integer.parseInt(point[0]));
		p.setY(Integer.parseInt(point[1]));
		return p;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		Point p=(Point) arg1;
		return "x:"+p.getX()+"y:"+p.getY();
	}
	
}

 局部配置文件定义PointAction-conversion.properties

 属性名称=转换器的位置

  point=com.sun.conversion.PointConverter

 

===========================================

 

下面是日期转换器的定义

package edu.accp.conversion;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class DateConverter extends StrutsTypeConverter {

	SimpleDateFormat[] sdf = { new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy年MM月dd"),

			new SimpleDateFormat("yyyy/MM/dd") };

	@Override
	public Object convertFromString(Map arg0, String[] values, Class arg2) {
		Date time=null;
		for (SimpleDateFormat s : sdf) {
			try {

				time=s.parse(values[0]);
                break;
			} catch (Exception e) {
				continue;
			}
		}
		return time;
	}

	@Override
	public String convertToString(Map arg0, Object obj) {
		SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
		return s.format(obj);
	}

}

 

 

 

 全局的配置文件设置为xwork-conversion.properties

 属性名称=转换器的位置

  java.util.Date=com.sun.conversion.DateConverter

你可能感兴趣的:(类型转换)