`
Callan
  • 浏览: 736585 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2 转换器

阅读更多

我们通过表单输入的数据其实都是一个String,有时需要把这些String转成int date等等
Struts1中也提供了类型转换器,比如form中有一个字段age,当我们输入表单时, Struts1的转换器会将这个age字符串转换成Form表单中对应的age数值,Struts2提供了更加强大的类型转换.


实例:
提供一个文本框,输入用户名和密码,以”,”号分隔开

首先新建输入页面(input.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
  </head>
 
  <body>
    <s:form action="userAction.action">
     <s:textfield name="user" label="username and password"></s:textfield>
    </s:form>
  </body>
</html>

创建一个用户pojo(User.java)

package com.bean;

public class User {

	private String username;
	private String password;
	public String getPassword() {
		
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
}

 
然后增加自定义转换器 (UserConverter.java)

package com.converter;

import java.util.Map;
import com.bean.User;


import ognl.DefaultTypeConverter;

public class UserConverter extends DefaultTypeConverter {

	@Override
	public Object convertValue(Map content, Object value, Class typeClass) {
		
		if(String.class == typeClass){
			
			User user = (User)value;
			
			String username = user.getUsername();
			
			String password = user.getPassword();
			
			return username + "-" + password;
			
		} 

		if(User.class == typeClass){
			
			User user = new User();
			
			String[] str = (String[])value;
			
			String[] paramValues = str[0].split(",");
			
			user.setUsername(paramValues[0]);
			
			user.setPassword(paramValues[1]);
			
			return user;
		}
		
		return null;
	}
}

 

 创建Action  (UserAction.java)

package com.action;

import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	
	private static final long serialVersionUID = 8469145731747703330L;
	
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {
		
		if("callan".equals(user.getUsername()) && "fjf".equals(user.getPassword())){
			return SUCCESS;
		} else {
			return INPUT;
		}		
	}
}

 

添加struts.xml中添加以下配置

 

<action name="userAction" class="com.action.UserAction">
			<result name="success">/welcome.jsp</result>
			<result name="input">/input.jsp</result>
		</action>

 

 

接着在Action同目录下加入XXX-conversion.properties
这里是在UserAction目录下加入UserAction-conversion.properties,并在其中加入
user=com.converter.UserConverter
user表示的是UaerAction中的一个字段,user使用com.converter.UserConverter转换器


也可以配置全局转换器,在class根目录下添加xwork-conversion.properties,这个名字是固定的,加入com.bean.User=com.converter.UserConverter2表示所有的com.bean.User都使用的是UserConverter2转换器

 

 

 

 

 

分享到:
评论
2 楼 cn_arthurs 2008-12-29  
这样的操作是不是相当于action 1 版本中的使用继承ActionForm类,来做数据的转换呢
1 楼 Ethip 2008-10-21  

我在做全局转换的时候,出现了问题。
我的实例中,因为要转换多个相同类型的属性,用到泛型。
如果你有空的话,麻烦帮我看看哦 ^_^
http://ethip.iteye.com/blog/254754

相关推荐

    struts2 类型转换器

    在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...

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

    ### Struts2转换器、拦截器、验证以及国际化深度解析 #### 类型转换概述与实践 类型转换在Struts2框架中扮演着至关重要的角色,它解决了前端展示数据与后端处理数据之间的类型不匹配问题。在Web开发中,前端往往以...

    struts2自定义类型转换器

    2. **配置转换器**:为了让Struts2知道何时使用自定义的转换器,我们需要在配置文件(通常是struts.xml)中进行声明。可以使用`&lt;conversion-property&gt;`标签来指定转换器应用于哪个字段,或者全局注册转换器。 ```...

    struts2注册转换器

    4. **使用转换器**:一旦转换器注册成功,Struts2将在处理表单提交时自动调用该转换器,将字符串转换为日期对象。 通过这样的自定义转换器,我们可以确保Struts2能正确处理特定格式的日期输入,避免了因格式不匹配...

    struts日期转换器

    要使用Struts的日期转换器,首先你需要在Action类中定义一个日期类型的属性,并为其添加相应的注解`@DateTimeFormat`,或者在Struts配置文件中定义一个转换器。`@DateTimeFormat`注解允许你指定日期的输入格式,这样...

    struts2数据类型转换器

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

    json struts2转换

    Struts2是一个流行的Java web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在处理用户交互和数据交换时,JSON(JavaScript Object Notation)已经成为现代Web服务的标准格式,因为它轻量级且...

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

    自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...

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

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

    自定义struts时间转换器

    这时,我们就需要自定义一个Struts转换器来完成这个任务。 自定义Struts转换器的步骤如下: 1. 创建转换器类:继承`org.apache.struts2.util.StrutsTypeConverter`类,并重写其`convertFromString`和`...

    Struts 自定义转换器

    在Struts中,转换器是实现了org.apache.struts2.util.Converter接口的类。这个接口定义了一个`convert`方法,该方法接受一个对象作为参数,并返回转换后的结果。默认情况下,Struts提供了许多内置的转换器,可以处理...

    Struts自定义类型转换器

    本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...

    ueditor struts2图片上传问题解决办法

    在使用富文本编辑器ueditor与Struts2框架结合进行图片上传时,常常会遇到一些问题,这些问题可能涉及文件过滤、文件类型限制、文件大小控制、上传路径设置等多个方面。以下是一些解决这些问题的关键知识点: 1. **...

    struts2的转换器

    在Struts2中,转换器(Converter)扮演着至关重要的角色,它负责将用户输入的数据转换为模型对象的属性,确保数据类型的一致性和安全性。转换器是Struts2框架中Action类与HTTP请求之间数据绑定的关键组件。 在...

Global site tag (gtag.js) - Google Analytics