传智Struts2笔记(9)类型转换器

自定义类型转换器

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

Java代码
  1. import java.util.Date;   
  2. public class HelloWorldAction {   
  3.     private Date createtime;   
  4.   
  5.     public Date getCreatetime() {   
  6.         return createtime;   
  7.     }   
  8.   
  9.     public void setCreatetime(Date createtime) {   
  10.         this.createtime = createtime;   
  11.     }   
  12. }  



Java代码
  1. public class DateConverter extends DefaultTypeConverter {   
  2.                 @Override  public Object convertValue(Map context, Object value, Class toType) {   
  3.     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");   
  4.     try {    
  5.         if(toType == Date.class){//当字符串向Date类型转换时   
  6.             String[] params = (String[]) value;// Request.getParameterValues()    
  7.             return dateFormat.parse(params[0]);   
  8.         }else if(toType == String.class){//当Date转换成字符串时   
  9.             Date date = (Date) value;   
  10.             return dateFormat.format(date);   
  11.         }   
  12.     } catch (ParseException e) {}   
  13.     return null;   
  14.     }   
  15. }  


将上面的类型转换器注册为局部类型转换器:
在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:
属性名称=类型转换器的全类名
对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:
createtime= cn.itcast.conversion.DateConverter


自定义全局类型转换器


将上面的类型转换器注册为全局类型转换器:
在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:
待转换的类型=类型转换器的全类名
对于本例而言, xwork-conversion.properties文件中的内容为:
java.util.Date= cn.itcast.conversion.DateConverter

你可能感兴趣的:(传智Struts2笔记(9)类型转换器)