struts2的类型转换

页面部分例如:

<s:textfield  name="point"  lable="point" />  //坐标用逗号分隔开

<s:textfield  name="age"  lable="age" />

<s:textfield  name="name"  lable="name" />

<s:textfield  name="date"  lable="birthday" />

 

javaBean部分:

public class Point{

  private   int   x;

  private   int   y;

   .....

}

 

建立一个自定义转化类

public  class  PointConverter  extends  DefaultTypeConverter{

     @override

     //toType 用来描述是从String(客户端)到自定义类型的转换还是自定义类型到String(客户端)的转换,toType表示转换成什么

     //value是一个Object类型的数组(防止客户端同名文本输入框)

     public  Object  convertValue(Map  context, Object  value,  Class  toType) {          

            //从客户端到服务器端的转换

             if(Point.class  ==  toType){

                Point  point  =  new  Point();

                String[]  str  =  (String[])value;

                String   paramValues  =  str[0].split(",");

                int  x  =  Integer.parseInt(paramValues[0]);

                int  y  =  Integer.parseInt(paramValues[1]);

                point.setX(x);

                point.setY(y);

                return  point;

           }

           //从服务器到客户端的转换

             if(String.class  ==  toType){

                Point  point  = (Point)value;

                int  x  = point.getX();

                int  y  =  point.getY();

                point.setX(x);

                point.setY(y);

                String  result  = "x=" + x + " , y= " + y;

                return  result;

           }

                return  null;

     }

}

 

Action类:

public  class  PointAction  extends  ActionSupport{

     private  Point  point;

     private   int   age;

     private   String  name;

     private    Date   date;

     ....

     public  String  execute  throws Exception{

           return  SUCCESS;

     }

}

 

页面部分:

point:<s:property  value="point" />

age:<s:property  value="age" />

name:<s:property  value="name" />

date:<s:property  value="date" />

 

属性文件部分:(用来告诉struts2我们自定义的属性转换类,该属性文件必须与该属性转换类放置在相同的目录下)

该属性文件的命名必须遵从 “类名-conversion.properties” 此处的类名为属性所属的类的类名,即要对那个类下的属性进行转换,即:PointAction-conversion.properties

内容:

         point=com.simier.converter.PointConverter          //此处表示要对PointAction类中的point属性(setter方法对应的那个属性名)使用PointConverter类转换器进行属性转换  //文件中可以写多个转换配置

 

流程理解:

当页面发起一个请求时,请求会去找相应的Action类,后在Action类中找与表单属性相对应的setter方法,当然在调用相应setter方法之前struts2会先检查有没有定义一个与之类型相对应的自定义类型转换类,如果没有找到则会使用默认的类型转换机制进行转化,如果找到了就会使用找到的自定义转换类进行类型的转化,找的时候会去需要被转换的属性所属类的当前目录下去找“属性所属类类名-convertion.properties”属性文件,再在文件中找那个属性需要转换而且转换时是需要那个类来做转换

 

全局类型转换:

        全局类型转换的属性文件的名字一固定的,“xwork-conversion.properties” 此文件需要放在 src 下面。

内容:

        com.simier.action.Point=com.simier.converter.PointConverter                      //等号前面是系统中要被转换的对象类型,后面是使用的转换类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值