码迷,mamicode.com
首页 > 其他好文 > 详细

Struts 2 之类型转换器

时间:2015-02-07 14:36:29      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:struts 2   类型转换   

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器

 

(1)局部类型转换器

如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。

 

以下为局部类型转换器的开发步骤

a.首先要写一个类来继承DefaultTypeConverter

b.然后覆盖convertValue这个方法,在里面进行数据转型

c.在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法,

如:HelloWorldAction-conversion.properties

 

d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)

 

如:birthday=com.ljq.type.converter.DateTypeConverter

(2)全局类型转换器

如果业务需求所有的日期都要转换,则可以使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,并且properties文件中的内容为:

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

如:java.util.Date =com.type.Converter.DateTypeConverter 即可

DefaultTypeConverter

日期转换器

public class DateTypeConverter extendsDefaultTypeConverter {
 
      public Object convertValue(Map<String, Object> context, Object value,Class toType) {
      SimpleDateFormat sdf = newSimpleDateFormat("yyyyMMdd HH:mm:ss");
             try {
                    if (toType == Date.class) {// 当字符串向Date类型转换时
                           //页面传递过来的参数被封装成了String[]
                           String[] params =(String[]) value;
                           returnsdf.parseObject(params[0]);
                    } else if (toType ==String.class) { // 当Date转换成字符串时
                           Datedate=(Date)value;
                           returnsdf.format(date);
                    }
             } catch (java.text.ParseExceptione) {
                    e.printStackTrace();
             }
                    return null;
             }
}

 

对象转换器

import ognl.DefaultTypeConverter;
public class UserConverter extends DefaultTypeConverter { 
 
    @Override 
    public Object convertValue(Map context,Object value, Class toType) { 
         //从页面转到服务器 toType表示要转化的类型,
        if (toType==User.class) { 
            /*页面传递过来的参数被封装成了String[]*/ 
            String[] params = (String[])value; 
            User user = new User(); 
            /*取出user字符串,按,分割成数组*/ 
            String[] uservalues =params[0].split(","); 
            user.setName(uservalues[0]); 
            user.setPass(uservalues[1]); 
            return user; 
        } 
        /*从服务器转到页面,显示user参数值,则要转换成字符串*/ 
        else if (toType==String.class) { 
            User user =(User)value; 
            return "姓名:"+user.getName()+", 密码:"+user.getPass(); 
        } 
        return null; 
    } 
}  


Struts 2 之类型转换器

标签:struts 2   类型转换   

原文地址:http://blog.csdn.net/u012152619/article/details/43602755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!