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