您的位置:首页 > 编程语言 > Java开发

Struts2 类型转换

2017-09-07 12:00 573 查看
类型转换
 

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

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

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

 

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

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

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

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

类型转换器:

publicclass PointConverter
extends StrutsTypeConverter{
     /**
      *
将表单提交的字符串数据转换为自定义数据类型
      * arg0:
是ActionContext
      * arg1:
是要进行类型转换的字符串数组
      * arg2:
是被转换的类型
      */
     public Object convertFromString(Map
arg0, String[]
arg1, 
arg2) {
         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(Map
arg0, 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 Point
point;
   
    public Point getPoint() {
       returnpoint;
    }
    publicvoid setPoint(Point
point) {
       this.point =
point;
    }
    public String execute(){
       return"success";
    }
}

 

struts.xml

<action
name="point"
class="com.zys.action.PointAction">
      
<result name="success">/show.jsp</result>
</action>

 

point.jsp页面

<body>
    <form
action="point.action"
method="post">
       point:<input
type="text"
name="point"/>
            
<input type="submit"
value="提交"/>
    </form>
</body>

 

show.jsp页面

<body>
    点:${point }<br>
    点:<s:property
value="point"/>
</body>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: