`

Strtus2(3):struts2的类型转换

阅读更多

1,新建一个Point类,包含两个变量x,y。只有set,get方法

package com.test.bean;

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;
	}
	
}

 2,新建input.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<html> 
  <body>
  	<!-- 1,用户输入合法的Point类型的数据后,根据struts.xml文件的配置,会跳转到PointAction.java中处理 -->
  	<!-- 2,PointAction在setPoint时发现在action目录下有一个PointAction-conversion.properties文件,
  	<!--	此时Struts知道会到PointConverter类中去做类型转换,变成 Point类型 -->
  	<!-- 3,转换完成后,执行PointAction类中的execute转到output.jsp页面,output.jsp取PointAction页面的getPoint方法的返回值 -->
  	<!-- 4,在得到返回值前,需要先到PointConverter方法再做类型转换,变成String类型 -->
  	<!-- 5,如何确认哪个JavaBean对应哪个转换器?这是在xwork-conversion.properties中设置的 -->
  	<!-- 6,如果想给某个实例指定特定的转换器,就在同个包目录下,建立 类名+"-conversion.properties"文件,如Point2Action-conversion.properties -->
    <s:form action="pointConvert">
    	<s:textfield name="point" label="point"></s:textfield>
    	<s:textfield name="age" label="age"></s:textfield>
    	<s:textfield name="username" label="username"></s:textfield>
    	<s:textfield name="date" label="birthday"></s:textfield>
    	<s:submit></s:submit>
    </s:form>
  </body>
</html>

 

3,建立转换类

package com.test.convert;

import java.util.Map;
import ognl.DefaultTypeConverter;
import com.test.bean.Point;

public class PointConvert extends DefaultTypeConverter {
	
	/**
	 * 根据toType的类型来判断是从客户端到服务器端,还是从服务器端到客户端
	 */
	public Object convertValue(Map context, Object value, Class toType) {
		//从客户端到服务端
		if (Point.class == toType) {
			Point point = new Point();
			String[] str = (String[]) value;
			String[] paramString = str[0].split(",");
			int x = Integer.parseInt(paramString[0]);
			int y = Integer.parseInt(paramString[1]);
			point.setX(x);
			point.setY(y);
			return point;
		}
		//从服务端到客户端
		if (String.class == toType) {
			Point point = (Point) value;
			int x = point.getX();
			int y = point.getY();
			String resultString = "[x=" + x + ",y=" + y + "]";
			return resultString;
		}
		return null;
	}
}

4,建PointAction

package com.test.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Point;

public class PointAction extends ActionSupport {
	private Point point;
	private int age;
	private String username;
	private Date date;
	public Point getPoint() {
		return point;
	}
	public void setPoint(Point point) {
		this.point = point;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public String execute() throws Exception {
		return SUCCESS;
	}
}

5,建指定类型转换配置文件PointAction-conversion.properties,放在action目录下

point=com.test.convert.PointConvert

 6,配置struts.xml文件

<action name="pointConvert" class="com.test.action.PointAction">
	<result name="success">/output.jsp</result>
	<result name="input">/input.jsp</result>	
</action>

 

 

分享到:
评论

相关推荐

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    struts2简单实例(类型转换)

    在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...

    struts2 类型转换器

    3. 如果注解没有提供转换器,Struts2会搜索`struts-default.xml`和应用的`struts.xml`配置文件,查找`&lt;conversion&gt;`元素来定义转换器。 4. 如果仍然没有找到,Struts2会尝试使用JavaBeans的`PropertyEditor`机制进行...

    STRUTS2类型转换

    Struts2是一个流行的Java web开发框架,其核心是Action,而类型转换是Struts2处理用户输入数据的一个重要环节。Struts2内置了多种类型转换,可以将HTTP请求中的字符串数据转换为各种基本类型和复杂类型,如日期、...

    struts2自定义数据类型转换练习

    本练习主要关注如何在Struts2中实现自定义的数据类型转换,以满足特定业务需求。 首先,我们需要了解Struts2的数据转换机制。当用户提交表单数据时,Struts2会通过ActionContext获取到这些数据,并尝试将其转换为...

    struts2数据类型转换器

    这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...

    struts2自定义类型转换器

    这个过程涉及到了类型转换,Struts2内置了一套转换器机制,能够自动处理基本类型和一些常见类型的转换。然而,对于如Date这样的复杂类型,需要自定义转换器来处理。 创建自定义类型转换器的步骤如下: 1. **定义...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、类型转换、国际化、拦截器等。在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理...

    struts2简单实例(类型转换方法对比)

    `struts2test2`可能展示了局部类型转换的应用,`struts2test4`可能是关于全局类型转换的实例,而`struts2test3`可能用于演示处理大量数据类型的转换。通过查看和运行这些代码,你可以更直观地理解每种转换方法的实现...

    Struts2 ConverterType类型转换 案例源码

    Struts2是一个强大的MVC框架,它在处理用户请求时提供了丰富的功能,其中包括类型转换(Converter)。类型转换是Struts2框架中一个重要的特性,它允许我们把前端表单提交的数据自动转换为后端Java对象的属性。在这个...

    struts1和struts2区别

    - **Struts2**:使用OGNL进行类型转换,提供更灵活的配置和基本及常见类型的转换器。 9. **校验**: - **Struts1**:校验可以在ActionForm的validate方法中完成,或使用Commons Validator扩展,对子对象的校验...

    struts2类型转换和国际化

    3. 在调用setter方法前,Struts2会检查该属性是否有自定义的类型转换器。如果存在,它会在Action同级目录下的`action名称-conversion.properties`文件中查找转换规则。若在`src`目录下的`-conversion.properties`...

    Struts2自定义类型转换

    ### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...

    struts2类型转换

    在Struts2中,类型转换是一项关键功能,它允许框架将用户输入的数据自动转换为应用程序所需的类型。这使得开发人员可以更加专注于业务逻辑,而不用过于担心数据类型匹配的问题。 类型转换在Struts2中的主要作用是...

    Struts2 自定类型转换器(三十四)

    在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...

    struts2类型转换 拦截器 校验的例子

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括类型转换、拦截器和校验机制。本文将深入探讨这些关键知识点,并通过实际例子来帮助你理解它们的工作原理和应用。 首先,我们来看看**类型转换...

Global site tag (gtag.js) - Google Analytics