Struts2 类型转换

来源:互联网 发布:win10软件找不到了 编辑:程序博客网 时间:2024/05/20 12:51

类型转换

 

1.      在servlet中,如果表单进行非字符串数据提交的时候,需要进行类型转换,如提交年龄(age)。

2.      在struts2中,常见数据类型struts2已经自动的进行了类型转换,无需进行手动转换。

3.      在某些情况下,有自定义类型时,struts2不能完成类型转换,那么需要手动转换,如果该自定义类型使用的频率较高时,手动转换重复代码将会增多,可以使用struts2提供的类型转换器来进行类型转换。

 

4.      案例:如坐标点(x,y)进行转换的步骤如下:

a)      编写类型转换器,继承StrutsTypeConverter类

b)      编写 xwork-conversion.propertie配置文件,放于src目录下,内容为要转换的类型=类型转换器

5.      使用类型转换来完成上述案例
类型转换器:

publicclass PointConverterextends StrutsTypeConverter{

     /**

      * 将表单提交的字符串数据转换为自定义数据类型

      * arg0: ActionContext

      * arg1: 是要进行类型转换的字符串数组

      * arg2: 是被转换的类型

      */

     public Object convertFromString(Maparg0, String[]arg1arg2) {

         String value=arg1[0];      //获取值栈中的值

         Point point=new Point();

         String x=value.substring(1,value.indexOf(","));

         String y=value.substring(value.indexOf(",")+1,value.length()-1);

         point.setX(Integer.parseInt(x));

         point.setY(Integer.parseInt(y));

         returnpoint;

     }

     /**

      * 将自定义的类型转换为字符串在前台显示----通过ognl表达式将会只用该方法进行转换上

      * arg0: ActionContext

      * arg1: 要转换的对象

      */

     public String convertToString(Maparg0, Object arg1) {

         Point point=(Point)arg1;

         return"("+point.getX()+","+point.getY()+")";

     }

}

 

xwork-conversion.properties配置文件

com.zys.system.model.Point=com.zys.converter.PointConverter

 

Action

publicclass PointAction {

    private Pointpoint;

   

    public Point getPoint() {

       returnpoint;

    }

    publicvoid setPoint(Pointpoint) {

       this.point =point;

    }

    public String execute(){

       return"success";

    }

}

 

struts.xml

<actionname="point"class="com.zys.action.PointAction">

       <result name="success">/show.jsp</result>

</action>

 

point.jsp页面

<body>

    <formaction="point.action"method="post">

       point:<inputtype="text"name="point"/>

             <input type="submit"value="提交"/>

    </form>

</body>

 

show.jsp页面

<body>

    :${point }<br>

    点:<s:propertyvalue="point"/>

</body>



原创粉丝点击