`

3.Struts2的自定义类型转换

阅读更多
package com.tao.struts2.bean;

import java.util.Map;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

	@SuppressWarnings("unchecked")
	@Override
	public Object convertValue(Map context, Object value, Class toType) {
		if (Point.class == toType) {
			String[] params = (String[]) value;
			String[] paramValues = params[0].split(",");
			Point point = new Point();
			point.setX(Integer.parseInt(paramValues[0]));
			point.setY(Integer.parseInt(paramValues[1]));
			return point;
		} else if (String.class == toType) {
			Point point = (Point) value;
			return new String("[x=" + point.getX() + ", y=" + point.getY()
					+ "]");
		}
		return super.convertValue(context, value, toType);
	}

}
 

一、自定义bean

package com.tao.struts2.bean;

public class Point {
	private int x;
	private int y;

	public Point() {
		super();
	}

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

}

 二、Action类

package com.tao.struts2.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;
import com.tao.struts2.bean.Point;

@SuppressWarnings("serial")
public class PointAction extends ActionSupport {
	private Point point;
	private String userName;
	private int age;
	private Date birthday;

	public String process() {

		return SUCCESS;
	}

	public Point getPoint() {
		return point;
	}

	public void setPoint(Point point) {
		this.point = point;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

}
<?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="default" namespace="/user" extends="struts-default">
		<action name="register" class="com.tao.struts2.action.PointAction"
			method="process">
			<result name="input">/trans/register.jsp</result>
			<result name="success">/trans/success.jsp</result>
		</action>
	</package>
</struts>
 

三、页面代码

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form action="${pageContext.request.contextPath }/user/register.action" method="post">
			点: <input name="point" type="text" /><br />
			名字: <input name="userName" type="text" /><br />
			年龄: <input name="age" type="text" /><br />
			生日: <input name="birthday" type="text" /><br />
			<input type="submit" value="提交" />
		</form>
	</body>
</html>

  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>info</title>
	</head>

	<body>
		<s:property value="point" />
		<s:property value="userName" />
		<s:property value="age" />
		<s:property value="birthday" />
	</body>
</html>
 

 四、自定义bean的转换器

1.继承自DefaultTypeConverter

package com.tao.struts2.bean;

import java.util.Map;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

	@SuppressWarnings("unchecked")
	@Override
	public Object convertValue(Map context, Object value, Class toType) {
		if (Point.class == toType) {
			String[] params = (String[]) value;
			String[] paramValues = params[0].split(",");
			Point point = new Point();
			point.setX(Integer.parseInt(paramValues[0]));
			point.setY(Integer.parseInt(paramValues[1]));
			return point;
		} else if (String.class == toType) {
			Point point = (Point) value;
			return new String("[x=" + point.getX() + ", y=" + point.getY()
					+ "]");
		}
		return super.convertValue(context, value, toType);
	}

}

2.继承自StrutsTypeConverter

package com.tao.struts2.bean;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

@SuppressWarnings("unchecked")
public class PointStrutsConverter extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] value, Class toType) {
		String[] paramValues = value[0].split(",");
		Point point = new Point();
		point.setX(Integer.parseInt(paramValues[0]));
		point.setY(Integer.parseInt(paramValues[1]));
		return point;
	}

	@Override
	public String convertToString(Map context, Object value) {
		Point point = (Point) value;
		return new String("[x=" + point.getX() + ", y=" + point.getY()
				+ "]");
	}

}
 

 五、配置转换器

1.局部的配置:在Action所在包下,Action类名-conversion.properties

point=com.tao.struts2.bean.PointConverter

  2.全局的配置:在src(WEB-INF/classes)下,添加xwork-conversion.properties

com.tao.struts2.bean.Point=com.tao.struts2.bean.PointStrutsConverter
 

 

 

 

 

分享到:
评论

相关推荐

    Struts2自定义类型转换

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

    Struts自定义类型转换器

    ### Struts自定义类型转换器 #### 一、概述 在Web开发中,表单提交的数据通常是字符串形式的,而在业务逻辑处理时往往需要将这些数据转换为其他类型的对象(如日期、数字等)。Struts框架为了更好地处理这种类型...

    struts2自定义类型转换器

    3. **处理日期格式**:在自定义转换器中,我们需要解析前端传递的日期字符串并转换为Date对象。这通常涉及到日期格式化。可以使用`SimpleDateFormat`类来完成这个任务。 ```java try { SimpleDateFormat formatter...

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

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

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    Struts2通过内置的类型转换器和自定义转换器来解决这个问题。默认情况下,Struts2提供了一系列内建的转换器,如IntegerTypeConverter、FloatTypeConverter和DateTypeConverter等,它们能够自动将请求参数转换为相应...

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

    Struts2作为一款流行的Java Web框架,其在处理用户输入数据时扮演着重要角色。...在练习中,你可以尝试创建不同的自定义转换器,并理解它们在处理不同类型数据时的作用,从而加深对Struts2数据处理机制的理解。

    struts 2.0 自定义类型转换器 注册类型转换器 入门实例 简单实例

    自定义类型转换器是Struts 2的核心特性之一,允许开发者根据业务需求定制数据转换规则。以下将详细介绍如何创建、注册以及使用自定义类型转换器。 1. **创建自定义类型转换器** - 创建一个类,实现`org.apache....

    传智播客struts2.1源代码_自定义类型转换器

    接着,当Struts2接收到相关参数时,会自动调用自定义转换器进行转换。 6. **调试与测试** 调试自定义类型转换器通常涉及到设置断点,观察转换过程中的变量状态,以及通过单元测试确保转换逻辑的正确性。在IDE如...

    struts2自定义类型转换、拦截器实例练习

    本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...

    struts2 类型转换器

    标签中的“源码”可能意味着博客会深入到Struts2框架的源代码中,解释类型转换器的工作原理和如何根据源代码实现自定义转换器。而“工具”可能指的是使用Struts2提供的工具类或API来辅助类型转换。 在`Struts2_3500...

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

    理解并掌握如何利用内置转换器、自定义转换器以及处理转换错误,对于构建高效、稳定的Struts2应用至关重要。通过深入学习Struts2的源码和使用相关工具,我们可以更深入地了解这些机制,并优化我们的应用程序。

    struts2如何配置与自定义类型转换

    Struts2是一个强大的MVC框架,它在处理用户请求时涉及到数据类型的转换,这在处理复杂的表单数据或者自定义对象时尤其重要。本篇文章将详细介绍如何在Struts2中进行配置与自定义类型转换。 首先,Struts2的配置主要...

    struts2自定义编写转换类

    通常,Struts2框架内置了一些基本类型的转换器,但有时我们需要对特定的数据类型进行自定义转换,这时就需要编写自定义的转换类。下面将详细讲解如何在Struts2中实现自定义转换类。 首先,了解Struts2的转换机制。...

    org.apache.struts2.dispatcher.FilterDispatcher

    3. **xwork-2.1.2-sources.jar**: 这个文件包含了XWork的核心源代码,XWork是Struts 2的基础框架,提供了一套动作调度和类型转换机制。`FilterDispatcher`虽然在Struts 2中使用,但它的许多功能依赖于XWork库。 4. ...

    struts2类型转换

    Struts2是一个非常流行的Java Web框架,它极大地简化了MVC(模型-视图-控制器)应用程序的开发。在Struts2中,类型转换是一项关键功能,它...同时,自定义转换器也使得Struts2能够适应各种复杂的数据类型和业务场景。

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

    Struts2是一个流行的Java web开发...总之,Struts2的类型转换机制为开发者提供了强大的灵活性和便利性,不仅可以处理基本类型,还能方便地扩展以支持自定义类型和复杂数据结构的转换,从而简化了Web应用的开发工作。

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

    ### Struts2的类型转换与OGNL表达式语言 #### 一、Struts2的类型转换类型 在Struts2框架中,类型转换是处理用户输入数据时的一个关键环节。Struts2支持多种内置的数据类型转换,同时也允许开发人员自定义类型转换...

    struts2数据类型转换器

    2. 在struts.xml配置文件中定义`&lt;global-converters&gt;`或`&lt;package&gt;`级别的`&lt;converters&gt;`元素,添加自定义转换器。 此外,Struts2还提供了`ConversionError`接口,用于处理转换失败的情况。当转换失败时,我们可以...

    struts2简单实例(类型转换)

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

Global site tag (gtag.js) - Google Analytics