package com.itheima.web.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;
/**
* 需求:
* 把表单中的MM/dd/yyyy格式的数据转成日期类型
* 把数据库中的本地日期格式,转成MM/dd/yyyy形式输出
*
* 自定义子类转换器:
* 第一步:编写一个类,继承自StrutsTypeConverter,实现convertFromString,convertToString抽象方法
* @author zhy
*
*/
public class MyTypeConvertor extends StrutsTypeConverter {
//定义一个类型转换器
private DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
/**
* 把字符串数组中的数据转成日期类型
*
* 方法参数详解:
* Map context:是OGNL的上下文对象,我们暂时不知道,所以暂时也不用
* String[] values:要转换的数据
* Class toClass:目标类型
*/
public Object convertFromString(Map context, String[] values, Class toClass) {
//1.先看看有没有数据
if(values == null || values.length == 0){
return null;
}
//2.取出数组中的第一个元素
String date = values[0];
//3.判断目标类型的字节码是不是日期类型
if(toClass == java.util.Date.class){
try {
//4.使用DateFormat进行转换,并且返回转换后的结果
return format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
return null;
}
/**
* 把日期类型的数据转换成字符串
*
* 方法参数详解:
* Map context:是OGNL的上下文对象,我们暂时不知道,所以暂时也不用
* Object o:要转换的数据
*/
public String convertToString(Map context, Object o) {
//1.判断object是不是日期类型
if(o instanceof Date){
Date date = (Date)o;
//2.是日期类型,使用转换器转成指定格式的字符串,并返回
return format.format(date);
}
return null;
}
}
然后在src创建一个命名为xwork-conversion.properties