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