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

日期转换器

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

 

对象转换器

  1. import ognl.DefaultTypeConverter;  
  2. public class UserConverter extends DefaultTypeConverter {   
  3.    
  4.     @Override   
  5.     public Object convertValue(Map context,Object value, Class toType) {   
  6.          //从页面转到服务器 toType表示要转化的类型,  
  7.         if (toType==User.class) {   
  8.             /*页面传递过来的参数被封装成了String[]*/   
  9.             String[] params = (String[])value;   
  10.             User user = new User();   
  11.             /*取出user字符串,按,分割成数组*/   
  12.             String[] uservalues =params[0].split(",");   
  13.             user.setName(uservalues[0]);   
  14.             user.setPass(uservalues[1]);   
  15.             return user;   
  16.         }   
  17.         /*从服务器转到页面,显示user参数值,则要转换成字符串*/   
  18.         else if (toType==String.class) {   
  19.             User user =(User)value;   
  20.             return "姓名:"+user.getName()+", 密码:"+user.getPass();   
  21.         }   
  22.         return null;   
  23.     }   
  24. }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值