zoukankan      html  css  js  c++  java
  • struts2_struts类型转换

    一.在Servlet中,表单提交的非字符串类型需要手动转换

      

      1.在struts中,表单提供的常见数据类型struts框架自动转换,无需手动转换

      2.在某些情况下,某些自定义类型struts不能完成自动转换,需要进行手动转换,如果需要转换的类型转换频率较高时,手动转换的代码增多,这时可以使用struts的类型转换器来进行转换

    二.类型转换

      

    使用类型转换的步骤

    1. 编写类型转换器,继承StrutsTypeConverter
    2. 编写xwork-conversion.properties配置文件,内容为:要转换的类型=类型转换器

     案例:

      编写实体类:Point

      
    package com.ahd.entity;
    
    public class Point {
        private int x;
        private int y;
        
        public int getX() {
            return x;
        }
        public void setX(int x) {
            this.x = x;
        }
        public int getY() {
            return y;
        }
        public void setY(int y) {
            this.y = y;
        }
        @Override
        public String toString() {
            return "(" + x + "," + y + ")";
        }
        
    }
    Point

      编写PointAction

      
    package com.ahd.action;
    
    import com.ahd.entity.Point;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class PointAction extends ActionSupport{
        private Point point;
        
        public Point getPoint() {
            return point;
        }
        public void setPoint(Point point) {
            this.point = point;
        }
    
    
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println(point.getX()+point.getY());
            System.out.println(point);
            return Action.SUCCESS;
        }
    }
    PointAction

      xwork-conversion.properties

    com.ahd.entity.Point=com.ahd.converter.PointConverter

      编写类型转换器:PointTypeConverter,继承StrutsTypeConverter类,并重写convertFromString方法和convertToString方法,

    package com.ahd.converter;
    
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    import com.ahd.entity.Point;
    
    public class PointConverter extends StrutsTypeConverter{
    
        @Override
        public Object convertFromString(Map context, String[] values, Class toClass) {
            // TODO Auto-generated method stub
            String value=values[0];
            Point point=new Point();
            
            int x=Integer.parseInt(value.substring(0, value.indexOf(",")));
            int y=Integer.parseInt(value.substring( value.indexOf(",")+1,value.length()));
            
            point.setX(x);
            point.setY(y);
            
            return point;
        }
    
        @Override
        public String convertToString(Map context, Object o) {
            // TODO Auto-generated method stub
            Point point=(Point)o;
            return "("+point.getX()+","+point.getY()+")";
        }
        
    }

      

      struts.xml

      
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "struts-2.0.dtd">
    
    <struts>
        <package name="struts2" extends="struts-default" namespace="">
            <action name="point" class="com.ahd.action.PointAction">
                <result>/success.jsp</result>
                <result name="input">/input.jsp</result>
            </action>
        </package>
    </struts>
    struts.xml

      

      web.xml

      
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app id="WebApp_ID">
        <display-name>struts2_02_modelDrive</display-name>
        
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    web.xml
  • 相关阅读:
    (转)Android学习-使用Async-Http实现图片压缩并上传功能
    (转)Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的类或则方法
    android如何判断控件的显示或者隐藏
    Android开发之利用ViewPager实现页面的切换(仿微信、QQ)
    Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转
    Android开发之自定义的ProgressDialog
    Android开发之SharedPreferences的封装
    Pytorch有什么节省显存的小技巧?
    pytorch模型提示超出内存cuda runtime error(2): out of memory
    Structured3D: A Large Photo-realistic Dataset for Structured 3D Modeling
  • 原文地址:https://www.cnblogs.com/aihuadung/p/10011342.html
Copyright © 2011-2022 走看看