Struts2.3.7技术的汇总之三(类型…


package cn.itcast.web.struts.converters;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateTypeConverter extends DefaultTypeConverter {
 @Override
 public Object convertValue(Map context, Object value,
   Class toType) {
  // 这个转换器可以实现双向转换,即服务端打给客户端的数据以及客户端 给服务端的数据,如果是该类型
  // 就使用类型转换器;
  if (value != null) {
   SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");
   // 首先判断我们要转换的类型是否是我们需要的
   if (toType == Date.class) {
    // 将表单中的数据用一个数组封装,为什么药用数组封装能? 为如果表单页面使用的是复选框,很容易出现
    // 多个同名参数,服务器为了考虑所有情况就用一个数组来接受;
    String[] values = (String[]) value;
    if (values[0] != null && "".equals(values[0].trim())) {
     try {
      return sdf.parse(values[0]);
     } catch (ParseException e) {
      throw new RuntimeException(e);
     }
    }
   }
   if (toType == String.class) {
    Date date = (Date) value;
    return sdf.format(date);
   }
  }
  return null;
 }
}
配置文件内容:
student.birthday=cn.itcast.web.struts.converters.DateTypeConverter
注意这是局部类型转换器,student.birthday是表示action中有一个student字段,student字段又有一个birthday字段,是对这个属性进行类型转换的;这里需要注意的地方是,局部类型转换的命名规则是ActionClassName-converter.xml
比如这里是RegisterAction.converter.xml;这个文件方法action目录下
全局类型转换器的命名规则为xwork-converter.xml这是固定写法,这个文件放在src目录下;
转换器要注意的地方:一是父类的选取,建议选用xwork的,而对于value为什么需要转换成一个字符串数组要清楚;然后就是SimpleDateFormat 式化输入的使用,顺便提一句,在struts.xml中配置action时,也可以配置类型转换器;
 
 
Struts2.3.7技术的汇总之三(类型转换) 转发至微博
 
Struts2.3.7技术的汇总之三(类型转换) 转发至微博
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值