设为首页 加入收藏

TOP

struts2_struts类型转换(一)
2019-09-17 17:24:13 】 浏览:36
Tags: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_mode
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇微服务统一登陆认证怎么做?JWT ? 下一篇微服务中的设计模式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目