struts 学习笔记(二)类型转化

Struts类型转换,如point

3.1定义一个转换类,extends DefaultTypeConverter

 

package org.lei.converter;

 

 

import java.util.Map;

 

import javax.sql.PooledConnection;

 

import org.lei.model.Point;

 

import ognl.DefaultTypeConverter;

 

public class PointConverter extends DefaultTypeConverter {

 

    @Override

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

       // TODO Auto-generatedmethod stub

      

       //客户端到服务器

       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();

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

           return result;

          

       }

      

       //其他情况

       returnnull;

      

    }

   

}

3.2建立**-conversion.properties文件并配置

局部类型转换

在相应action的同一个包名下建立一个PointAction-conversion.properties文件,注意后缀名一般都是-conversion.properties,并在其中配置相应的要转换的类型

point =org.lei.converter.PointConverter

多个point时可以

point 2=org.lei.converter.PointConverter

point3 =org.lei.converter.PointConverter

 

 

3.3用struts标签呈现,自动调用action里面的get方法

点坐标:<s:propertyvalue="point"/><br>

   日期:<s:propertyvalue="date"/>

3.4全局类型转换的配置

(能够去匹配多个action)

在src目录下建立一个xwork-conversion.properties文件

Org.lei.model.Point= org.lei.converter.PointConverter

文件名字必须固定

3.5 list类型的数据转换

3.5.1 extendsStrutsTypeConverter继承该类

package org.lei.converter;

 

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

 

importorg.apache.struts2.util.StrutsTypeConverter;

import org.lei.model.Point;

 

public class PointCoverter2 extendsStrutsTypeConverter{

 

         @Override

         publicObject convertFromString(Map context, String[] values, Class arg2) {

                   //TODO Auto-generated method stub

                   List<Point>list= new ArrayList<Point>();

                   for(Stringvalue:values){

                            Pointpoint = new Point();

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

                            intx = Integer.parseInt(paramValues[0]);

                            inty = Integer.parseInt(paramValues[1]);

                           

                            point.setX(x);

                            point.setY(y);

                           

                            list.add(point);

                   }

                   returnlist;

         }

 

         @Override

         publicString convertToString(Map context, Object o) {

                   //TODO Auto-generated method stub

                   List<Point>list = (List<Point>) o ;

                   //字符串拼接

                   StringBuildersb = new StringBuilder();

                   sb.append("[");

                   intnumber= 0;

                   for(Pointpoint :list){

                            ++number;

                            intx = point.getX();

                            inty = point.getY();

                           

                            sb.append(number).append("x=").append(x).append(",y=").append(y).append("  ");

                           

                           

                   }

                   sb.append("]");

                   returnsb.toString();

         }

        

}

 

保证form中的标签的name都与所定义的list的变量名相同

  name=”point”  List<Point> point = new List<Point>();

在PointAction-conversion.properties进行配置。

3.6给action中的对象自动匹配,不用配置,通过反射功能

 

<s:textfieldname="point.x"label="坐标x"></s:textfield>

<s:textfieldname="point.y"label="坐标y"></s:textfield>

Point类必须有不带参数的构造方法才行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值