您的位置:首页 > 编程语言 > Java开发

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

2015-12-24 10:27 323 查看
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时,也可以配置类型转换器;

 

 




转发至微博 



转发至微博
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: