流程:
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