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