读书人

struts2类型转换兑现1(通过继承Defau

发布时间: 2012-08-14 10:39:57 作者: rapoo

struts2类型转换实现1(通过继承DefaultTypeConverter抽象类)
一.第一种struts2类型转换方式实例
1.convert.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>类型转换</title>  </head>  <body>    <form action="convert.action" method="post">    point1:<input name="point" type="text"></br>    point2:<input name="point2" type="text"></br>               <input type="submit" value="submit">    </form>  </body></html>

2.convertResult.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>类型转换结果页面</title>  </head>  <body>    point1:<s:property value="point"/><br>  point2:<s:property value="point2"/>  </body></html>

3.Point.java(POJO类)
package com.hitsoft.model;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;}@Overridepublic String toString() {String result = "x = " + x + " , y = " +y;return result;}}


4.struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <package name="struts2"  extends="struts-default"><action name="convert" name="code">package com.hitsoft.action;import java.util.Date;import com.hitsoft.model.Point;import com.opensymphony.xwork2.ActionSupport;public class ConvertAction extends ActionSupport{private Point point;private Point point2;public Point getPoint() {return point;}public void setPoint(Point point) {this.point = point;}public Point getPoint2() {return point2;}public void setPoint2(Point point2) {this.point2 = point2;}public String execute() throws Exception{return "success";}}

6.ConvertAction-conversion.properties(必须与ConvertAction类在同一级包下定义)
point=com.hitsoft.convert.PointConverterpoint2=com.hitsoft.convert.Point2Converter

7.PointConverter.java
package com.hitsoft.convert;import java.util.Map;import com.hitsoft.model.Point;import ognl.DefaultTypeConverter;public class PointConverter extends DefaultTypeConverter{@Overridepublic Object convertValue(Map context, Object value, Class toType) {if(Point.class == toType){String[] str = (String[])value;String firstValue = str[0];String[] resultValue = firstValue.split(",");Point point = new Point();point.setX(Integer.parseInt(resultValue[0]));point.setY(Integer.parseInt(resultValue[1]));return point;}else if(String.class == toType){Point point = (Point)value;int x = point.getX();int y = point.getY();String result = "x: " + x + "y:" + y;return result;}return null;}}


8.Point2Converter.java
package com.hitsoft.convert;import java.util.Map;import com.hitsoft.model.Point;import ognl.DefaultTypeConverter;public class Point2Converter extends DefaultTypeConverter{@Overridepublic Object convertValue(Map context, Object value, Class toType) {if(Point.class == toType){String[] str = (String[])value;String firstValue = str[0];String[] resultValue = firstValue.split(",");Point point = new Point();point.setX(Integer.parseInt(resultValue[0]));point.setY(Integer.parseInt(resultValue[1]));return point;}else if(String.class == toType){Point point = (Point)value;int x = point.getX();int y = point.getY();String result = "x: " + x + "y:" + y;return result;}return null;}}

9.访问地址:
http://localhost:8080/struts2/convert.jsp
输入:
1,2
3,4
输出:
point1:1,2
point2:3,4

说明:这种类型转换不能代码复用,有多个对象转换时就需要编写多个转换器。
point1:1,2 point2:3,4

都没有执行这个判断
        }else if(String.class == toType){              Point point = (Point)value;              int x = point.getX();              int y = point.getY();              String result = "x: " + x + "y:" + y;              return result;          }  


或者是调用Point类的toString方法~

读书人网 >开源软件

热点推荐