7.Struts2 自定义类型转换器

第七记:自定义类型转换器(以时间类型转换器为例)

1、局部类型转换器

   1-1:遵循时间规范的字符串自动类型转换

   如:UserAction中的时间

     public class UserAction{

            private  Date   today;

            public void setToday(Date today){

                    this.today=today;

            }

           public Date getToday(){

                  return  this.today;

            }

           public String printDate(){

                  System.out.println(this.getToday());

                  return "SUCCESS";

           }

     }

    若struts.xml中UserAction的别名是users,那么它的访问路径是users!printDate.action?today=2012-7-22。

   注意:若today=20120722这不能通过自动类型转换,程序判定today为String类型而不是Date类型。

   1-2:String类型和Date类型匹配策略

   例如:这里存在一个DateConverter

   public class DateConverter extends DefaultTypeConverter{

         @override

         public  Object  convertvalue(Map<String,Object>  context,Object value, Class toType){

                SimpleDateFormat  sdf=new SimpleDateFormat ("yyyyMMdd");

                try{

                     if(toType==Date.class){

                           String [] params=String [] | value;

                           return sdf.parse(params[0]);

                    }else if(toType==Date.class){

                          Date date=(Date)value;

                          return sdf.format(date);

                   }

               }catch(Exception e){   }      

               return null;

         }

   }

     注册Action对应的转换器的属性文件:规则ActionName-conversion.properties

    如:UserAction-conversion.properties

    文件内容:如today=com.xxxx.DateConverter#key是要转换的字段,value是类型转换器的路径

2、全局类型转换器

   此时的属性文件改成:xwork-conversion.properties

   如定义所有的时间类型转换器都通过DateConverter,则:

  java.utils.Date=com.xxxx.DateConverter


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值