`

struts2 类型转换学习总结

阅读更多

给出如下实例

1、编写输入表单 input.jsp,代码如下

 

<body>
<h2><font color="red">用逗号将两个点分开</font></h2>
<s:form action="pointConverter">
   <s:textfield name="point" label="point"></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="date"></s:textfield>
   <s:submit label="submit"></s:submit>
</s:form>
</body>

 其中age,username,date的类型转换,struts2可以为我们自动完成,而对于point的类型转换我们需要一些额外的操作,具体见如下几步。

2、编写pointer类,代码如下:

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

3、编写类pointer的action,代码如下:

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

  4、配置struts.xml

 

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

 

5、编写output.jsp

   

point <s:property value="point"/><br>
age <s:property value="age"/><br>
username <s:property value="username"/><br>
date <s:property value="date"/><br>

6、编写转换器类PointConvert类

  

package com.test.converter;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.test.bean.Point;

public class PointConvert extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		List<Point> point=new ArrayList<Point>();
	
		for(String str1:values)
		{
			String[] str=str1.split(",");
			int x=Integer.parseInt(str[0]);
			int y=Integer.parseInt(str[1]);
			Point pt=new Point();
			pt.setX(x);
		    pt.setY(y);
		    point.add(pt);
			
		}
		return point;
	}

	@Override
	public String convertToString(Map context, Object o) {
		List<Point> point=(List<Point>)o;
		StringBuilder buf=new StringBuilder();
		buf.append("[");
		int number=0;
		for(Point pt:point)
		{
			 ++number;
		     int x=pt.getX();
		     int y=pt.getY();
		     buf.append(number).append(".( x= ").append(x).append(" y= ").append(y).append(")");		
		}
       buf.append("]");
	    return buf.toString();
	}

	
}

 7、配置PointConvert类的映射,创建一个PointAction-conversion.properties的文件。

      

point=com.test.converter.PointConvert

 

   这种类型的是局部类型转换文件,也可以生成全局的,以本例而言可以命名为"xwork-conversion.properties",代码为:

com.test.bean.Point=com.test.converter.PointConverter

        可以根据需求自己来定

至此一个类型转换实例开发完毕。

8、总结

(1)struts2的类型转换流程是这样的,把提交表单的参数,如本例中的username,用户再提交表单后,根据struts2.xml文件中的配置,表单中的参数交给PointAciton中的XXset方法,XXset方法将非对象类型的数据隐式转换成目标类型,(注意从客户端传过来的都是String类型的数据),对于对象类型的数据,XXset方法首先找这样的文件,它的名字为”本action的类名-conversion.properties“,如果没有找到那就找名字为”xwork-conversion.properties“的文件,如果还仍未找到,那么调用对象类型的 toString方法,赋给本action的成员变量。

(2)类型转换要知道的类:DefaultTypeConverter,StrutsTypeConverter。

(3)类型转换优先于数据校验。

分享到:
评论

相关推荐

    struts2类型转换深入总结

    此外,`Struts2TypeConversion.zip`这个压缩包文件可能包含了相关的示例代码、测试用例或者自定义转换器的实现,供学习者参考和实践。通过分析这些代码,我们可以更直观地了解如何在实际项目中应用Struts2的类型转换...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习笔记(完美总结)——转自OPEN经验库

    在实际项目中,Struts2可以处理类型转换、文件上传下载、拦截器(Interceptor)防止重复提交等问题。Interceptor是Struts2中的重要特性,它允许在Action执行前后插入额外的处理逻辑,如登录验证、日志记录等。深入...

    Struts2课堂学习总结

    10. **类型转换和插件**:Struts2具有强大的类型转换能力,可以自动将请求参数转换为Action属性。此外,通过插件机制,可以轻松地扩展Struts2的功能,如集成Spring、Hibernate等。 通过深入理解和实践这些知识点,...

    Struts2输入校验总结

    1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 2. **异常处理与错误封装**:如果类型转换过程中遇到问题...

    Struts2框架学习总结【自用】【原创】【详细】

    个人struts2框架学习后的梳理和总结,内容丰富,从配置文件到action类、result、ognl、类型转换器、国际化、拦截器、表单验证等等内容,还推荐了很多博客链接,有了它自学Struts2框架毫无压力!

    struts2总结大全

    Struts2允许自定义类型转换器,以便在Action属性和请求参数之间进行数据转换。局部类型转换器针对特定Action类的某个属性,而全局类型转换器则对所有Action类生效。通过实现`Converter`接口或扩展`...

    第2讲 --Struts2的类型转换

    总结来说,Struts2的类型转换机制是其核心功能之一,它有效地解决了HTTP请求数据与Action属性之间的类型不匹配问题。理解并掌握Struts2的类型转换,对于提升Java web应用的开发效率和质量具有重要意义。通过学习和...

    我的struts2的总结

    相比于Struts1,Struts2提供了更强大的功能,包括但不限于拦截器、类型转换、文件上传/下载等。Struts2的核心思想是基于拦截器(Interceptor)的,这种设计使得开发者可以更容易地扩展框架的功能。 ### Struts2与...

    struts2学习笔记

    总结起来,Struts2是一个功能丰富的Java web开发框架,它的环境搭建、类型转换、输入校验、拦截器机制、国际化支持以及与Servlet API的整合,为开发者提供了强大且灵活的工具,帮助构建高效、可维护的Web应用。学习...

    struts2学习笔记.doc

    - **概念介绍**:Struts2框架内置了一套类型转换机制,但有时需要对特定的数据类型进行定制化的转换处理。 - **实现步骤**: - 创建自定义的类型转换器类。 - 在`struts.xml`中注册自定义转换器。 - 在Action类中...

    struts2视频自学总结

    ### Struts2框架深入解析与自学总结 #### Struts2框架简介 Struts2是Apache组织维护的一个开源框架,它是Struts1的升级版本,基于MVC(Model-View-Controller)架构模式,用于简化Java Web应用的开发过程。Struts2...

    Struts2轻松入门,Struts2总结

    4. **类型转换**:自动类型转换机制,使得表单提交的数据可以自动转化为Action属性。 5. **异常处理**:全局异常处理机制,可以统一处理应用程序中的异常,提高代码可维护性。 三、Struts2与Struts1.x的区别 1. *...

    Struts2学习笔记

    Struts2提供了一种自动类型转换机制,允许用户输入的数据自动转换为Action类中相应属性的类型。开发者可以通过注解或配置文件自定义类型转换规则,以处理复杂或特殊类型的字段。 四、Struts2数据校验和验证框架: ...

    Struts2 英文教程

    Struts2还提供了自动的数据类型转换功能,可以将基本类型的数据进行转换,同时允许开发者定义更复杂的转换规则。 #### 结果类型与拦截器 Struts2中的`ResultTypes`定义了不同的结果处理方式,例如可以重定向到另一...

    Struts2学习笔记2012

    ### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” &gt; “New” &gt; “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...

    struts2标签+校验+SSH

    总结来说,Struts2作为一款强大的MVC框架,通过其无侵入式设计、拦截器、类型转换、多样化的视图支持和灵活的数据校验,极大地提升了Java web开发的效率和质量。对于初学者来说,理解和掌握这些核心特性是学习Struts...

Global site tag (gtag.js) - Google Analytics