`
wanglihu
  • 浏览: 919480 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

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;
	}
	@Override
	public 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" class="com.hitsoft.action.ConvertAction">
		<result name="success">/convertResult.jsp</result>
	</action>
    </package>
</struts>


5.ConvertAction.java
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.PointConverter
point2=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{

	@Override
	public 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{

	@Override
	public 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

说明:这种类型转换不能代码复用,有多个对象转换时就需要编写多个转换器。
分享到:
评论
1 楼 soulaxin 2012-03-09  
结果咋是这样的倪?
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方法~

相关推荐

    struts2数据类型转换

    开发者可以通过继承`StrutsTypeConverter`抽象类来快速实现自定义类型转换器。相比第一种方式,这种方式可以减少对转换类型的判断逻辑。 ```java public abstract class StrutsTypeConverter extends ...

    Struts2自定义类型转换

    1. **创建自定义类型转换器**:通过继承`StrutsTypeConverter`并实现`convertFromString`和`convertToString`方法。 2. **配置类型转换规则**: - 对于**全局类型转换**,在类路径下创建`xwork-conversion....

    实验4 Struts2的类型转换与OGNL表达式语言.doc

    自定义类型转换可以通过实现特定接口来完成,比如继承`org.apache.struts2.util.ConversionError`和`org.apache.struts2.util.TypeConverter`等。 #### 二、局部类型转换器与全局类型转换器的区别 **2.1 局部类型...

    Struts2的自动类型转换及自定义类型转换[文].pdf

    `StrutsTypeConverter`是一个抽象类,作为`DefaultConverter`的子类,它简化了转换器的实现,提供了`convertToString`和`convertFromString`这两个主要方法,分别用于字符串到对象和对象到字符串的转换。 在实现...

    struts2-处理类型转换

    1. **编程式校验**:Action类需要实现`Validateable`接口,这会使得Struts2在执行`execute`方法前调用`validate`方法。在`validate`方法中,可以添加针对每个字段的校验逻辑,如果发现错误,通过`addActionError`或`...

    struts2数据转换示例

    这可以通过实现Converter接口或继承DefaultTypeConverter类来完成。在描述中提到的"interceptor"文件,很可能包含了关于拦截器(Interceptor)的配置或示例代码,因为拦截器是Struts2中实现类型转换的关键组件之一。...

    深入学习struts2

    自定义转换器通过实现Struts2的TypeConverter接口,或者继承DefaultTypeConverter类来实现。你需要重写`convertValue()`方法,根据实际需求进行转换。注册自定义类型转换器有三种方式:局部类型转换器、全局类型转换...

    Struts2的转换器与验证框架

    自定义转换器需要继承`org.apache.struts2.util.DefaultTypeConverter`,并重写`convertValue()`方法。在该方法中,可以通过ActionContext获取上下文信息,对需要转换的值进行处理,并指定目标类型。 自定义转换器...

    关于Struts2的类型转换详解

    开发者可以通过实现这个接口创建自定义的类型转换器,或者继承`ognl.DefaultTypeConverter`简化实现过程。`convertValue`方法是核心,它负责执行实际的类型转换,无论是将对象转换为字符串,还是将字符串转换为对象...

    struts2学习笔记

    在实际应用中,常常会继承Struts2提供的StrutsTypeConverter类,覆盖convertFromString和convertToString方法,以便更灵活地进行字符串到对象以及对象到字符串的转换。 三、Struts2输入校验 Struts2提供了两种主要...

    Struts2转换器、拦截器、验证以及国际化

    这可以通过继承`DefaultTypeConverter`类并重写`convertValue`方法来实现。例如,为了处理`yyyyMMdd`格式的日期,可以创建一个`DateConverter`类,并在其中定义相应的转换逻辑。 自定义转换器有两种注册方式: 1. ...

    一篇文章搞定Struts2的类型转换

    Struts2还提供了一个名为`StrutsTypeConverter`的类,它继承自`DefaultTypeConverter`,简化了自定义类型转换器的实现。我们可以直接继承`StrutsTypeConverter`而不是`DefaultTypeConverter`,这样可以利用Struts2的...

    自定义类型转换器

    Struts2框架提供了一种灵活的方式来实现这种类型的转换——即通过自定义类型转换器(Type Converters)。本文档将详细介绍如何在Java中自定义类型转换器,并通过一个具体的例子来演示其使用方法。 #### 二、局部...

    struts2入门实例1

    OGNL表达式实现类型转换 9.Struts2_03_validate_review 输入校验 ————复习前面的 10.Struts2_04_validate_method ????????????? validateXXX方法校验得到的错误信息先显示出来,然后才是...

    Struts2学习教程之自定义类型转换器的方法

    在Struts2框架中,类型转换器扮演着关键...为了使Struts2框架能够识别并使用这个自定义类型转换器,还需要在配置文件中进行声明,或者通过注解`@Result`和`@Param`来指定。在XML配置文件中,你可以这样配置: ```xml ...

    如何解决struts2日期类型转换

    1. 创建一个自定义的`DateConverter`类,继承`DefaultTypeConverter`,实现`String`到`Date`和`Date`到`String`的转换逻辑。 2. 在`xwork-conversion.properties`文件中注册`DateConverter`,映射到`java.util.Date`...

    struts2.2学习笔记

    Struts2提供了一种简化类型转换编码的方式,即通过继承`StrutsTypeConverter`,覆盖`convertFromString()`和`convertToString()`两个抽象方法。这两个方法分别负责将页面输入的字符串转换为后台对象,以及将后台对象...

    Struts2教学阶段2

    通过深入理解Struts2的类型转换与拦截器机制,开发者能够更好地利用这些特性来构建高效、稳定的Web应用程序。类型转换确保了数据的一致性和安全性,而拦截器则提供了强大的扩展性和灵活性,这些都是Struts2作为顶级...

    struts2入门实例2 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    Struts2中的参数传递

    通过这两个组件,Struts2实现了动态的数据绑定和灵活的类型转换功能。 #### 二、OGNL与ValueStack ##### 1. OGNL简介 OGNL是一种强大的表达式语言,用于获取和设置Java对象的属性。在Struts2中,OGNL被用来解析和...

Global site tag (gtag.js) - Google Analytics