struts2的自定义类型转换器

1、java.util.Date类型的属性可以接受格式为2009-07-20的请求参数,但如果我们需要接收格式为20091221的请求参数,我们必须定义类型转换器,否则struts2无法自动完成类型转换。

import java.util.Date

public class HelloWorldAction()

{

  private Date createtime;

  public Date getCreatetime()

 {

  return createtime;

 }

 public void set Createtime(Date createtime)

 {

  this.createtime = createtime;

 }

}

public class DateConverter extends DefaultTypeConverter

{

 @Override public Object converValue(Map context, Ovject value,Class to Type)

 {

  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

  try{

        if(to Type == Date.class)

         {

            //当字符串向Date类型转换时

            String[] params = (String) value;//Request getParameterValues()

            return dateFormat.parse(params[0]);

         }

         else if (to Type == String.class)

         {

             //当Date转化成字符串时

             Date date = (Date) value;

             return dateFormat format(date);

         }

     }catch(ParseExceprion e)

     {

       return null;

     }

 }

将上面的类型转换器注册为局部类型转换器

在Action类所在的包下放置ActionClassName-conversion .properies文件,ActionClassName是Action的雷鸣,后面的-conversion.properties是固定写法,对于本例而言,文件的名称为HelloWorldAction-comversion.properties。

在properties文件中的内容为:

属性名称=类型转换器的全类名

对于本例而言,HelloWorldAction-comversion.properties文件中的内容为:createtime=cn.itcase.conversion.DateConverter.

}

2、将上面的类型转换器注册为全局类型转换器:

在WEB-INF/CLASSES下放置xwork-conversion.properties文件。在properties文件中的内容为:

待转换的类型=类型转换器的全类名

对于本例而言,xwork-conversion.properties文件中的内容为:

java.util.Date=cn.itcast.conversion.DateConverter

你可能感兴趣的:(struts2的自定义类型转换器)