`

Struts2(4):Struts2类型转换2

阅读更多

1,修改上一节的input.jsp文件

<s:form action="pointConvert">
    	<s:textfield name="point1" label="point1"></s:textfield>
    	<s:textfield name="point2" label="point2"></s:textfield>
    	<s:textfield name="point3" label="point3"></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>

    新建了point2,point3两个变量,如果照上一节的方法进行类型转换,需要在PointAction-conversion.properties文件中新建两个配置,即

point2=com.test.convert.PointAction
point3=com.test.convert.PointAction

 如果有多个这样的变更,这样做就太繁琐。

2,使用xwork的方式进行类型转换,在src目录下新建一个文件:xwork-conversion.properties

#所有Point类型的实例都用PointConverter进行转换
com.test.bean.Point=com.test.converter.PointConverter2

 这样就第1步中的方式简单很多,可以根据类型进行转换,而不需对每个变量都进行一次配置。

同时PointConvert.java类也要进行改造,需继承StrutsTypeConverter

package com.test.convert;

import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.test.bean.Point;

public class PointConvert extends StrutsTypeConverter {

	public Object convertFromString(Map context, String[] values, Class toClass) {
		Point point = new Point();
		String[] paramValues = values[0].split(",");
		int x = Integer.parseInt(paramValues[0]);
		int y = Integer.parseInt(paramValues[1]);
		point.setX(x);
		point.setY(y);
		return point;
	}

	public String convertToString(Map context, Object o) {
		Point point = (Point)o;
		int x = point.getX();
		int y = point.getY();
		String result = "[x="+x+" ,y="+y+"]";
		return result;
	}
}

 

struts.xml文件还是上一节的配置,没有修改。

output.jsp文件修改为

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <body>
  	point1:<s:property value="point1"/><br>
  	point2:<s:property value="point2"/><br>
  	point3:<s:property value="point3"/><br>
  	age:<s:property value="age"/><br>
  	username:<s:property value="username"/><br>
  	date:<s:property value="date"/><br>
  </body>
</html>

 

3,如果要进行LIST类型转换,应该怎么做?先对input.jsp进行改造。有三个name为point的输入框。

<s:form action="pointConvert">
    	<s:textfield name="point" label="point1"></s:textfield>
    	<s:textfield name="point" label="point2"></s:textfield>
    	<s:textfield name="point" label="point3"></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>

 对应PointAction.java也进行相应的改变,有一个List类型的point变量,用于存放从客户端转来的3个Point

package com.test.action;

import java.util.Date;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Point;

public class PointAction extends ActionSupport {
	private List<Point> point;
	private int age;
	private String username;
	private Date date;

	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 List<Point> getPoint() {
		return point;
	}
	public void setPoint(List<Point> point) {
		this.point = point;
	}
	public String execute() throws Exception {
		return SUCCESS;
	}
}

 PointConvert也进行相应的改变

public class PointConvert extends StrutsTypeConverter {

	public Object convertFromString(Map context, String[] values, Class toClass) {
		List<Point> list = new ArrayList<Point>();
		for (String value : values) {
			Point point = new Point();
			String[] param = value.split(",");
			point.setX(Integer.parseInt(param[0]));
			point.setY(Integer.parseInt(param[1]));
			list.add(point);
		}
		return list;
	}

	public String convertToString(Map context, Object o) {
		List<Point> list = (List<Point>)o;
		StringBuilder sb = new StringBuilder();
		for(Point point: list){
			sb.append("x= ").append(point.getX()).append(" y=").append(point.getY());
		}
		return sb.toString();
	}
}

 

分享到:
评论

相关推荐

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

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

    struts2简单实例(类型转换)

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

    struts2 类型转换器

    4. 如果仍然没有找到,Struts2会尝试使用JavaBeans的`PropertyEditor`机制进行转换。 标签中的“源码”可能意味着博客会深入到Struts2框架的源代码中,解释类型转换器的工作原理和如何根据源代码实现自定义转换器。...

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

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

    STRUTS2类型转换

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

    struts2数据类型转换器

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

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

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

    struts2自定义类型转换器

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

    Struts2 ConverterType类型转换 案例源码

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

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

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

    struts1和struts2区别

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

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

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

    struts2类型转换和国际化

    4. 找到转换规则后,Struts2会实例化对应的转换器类,进行从字符串到目标类型的转换,并返回转换后的对象给Action。 5. 将转换后的对象赋值给Action的属性,然后执行`execute()`方法。 6. `execute()`执行完毕后,...

    struts2类型转换

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

    Struts2自定义类型转换

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

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics