Struts2中会默认可以直接转化已有的数据类型,如int,String,Date等类型,但对于自定义的类型需要人工进行处理转化。以简单的自定义Point类为例,在页面中输入并进行相应的转化后输出。
<s:form action ="pointCon"> <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 label="submit"></s:submit> </s:form>
Struts表单中提交point类型的数据,需要为其指定相应的转化方法
自定义一个转化类,从ognl中默认的类型转化类继承而来
public class PointConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
//一个表单中,可以有多个同名的field,value为字符串数组,可接收所有的参数
//当客户端向服务器端进行提交,需要转化为point类型
if(Point.class==toType)
{
String[] str=(String[])value;
String[] params=str[0].split(",");
int x=Integer.parseInt(params[0]);
int y=Integer.parseInt(params[1]);
Point point=new Point();
point.setX(x);
point.setY(y);
return point;
}
//服务器端需要向客户端返回结果,转化为string类型
if(String.class==toType)
{ Point point =(Point)value;
int x=point.getX();
int y=point.getY();
String result="x= "+x+" ;y= "+y;
return result;
}
return null;
}
并在处理此form表单的Action文件下新建文件 【[Action文件名]-Conversion.properties】文件,写入配置信息point=com.test.converter.PointConverter,此时就将等号前的类型按照等号后的转化文件中的方法进行处理与转化。
以上所述为局部配置的转化方法,struts2提供了另外一种全局的转化方法,在src文件目录下新建【xwork-conversion.properties】文件,此文件名固定,同样也写入相应的配置信息,但需注意一点,需指出该类的所在位置,一个示例的配置信息如下:
com.test.bean.Point=com.test.converter.PointConverter2
同样的,可以得到一样的效果
另外,可以不用自己构造类型转化的方法而直接由struts默认提供的类继承而来,范例如下:
public class PointConverter2 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
Point point=new Point();
String[] params=arg1[0].split(",");
int x=Integer.parseInt(params[0]);
int y=Integer.parseInt(params[1]);
point.setX(x);
point.setY(y);
return point;
}
@Override
public String convertToString(Map arg0, Object arg1) {
Point point=(Point)arg1;
int x=point.getX();
int y=point.getY();
String result="[x= "+x+" ,y= "+y+" ]";
return result;
}
}
从StrutsTypeConverter类中继承,只需实现上述两个抽象方法,从字符串转化为相应类型或者从相应类型转化为字符串。
引入泛型支持后,可通过范围接收标签一样的输入,
<s:textfield name="point" label="point"></s:textfield> <s:textfield name="point" label="point2"></s:textfield> <s:textfield name="point" label="point3"></s:textfield>
接收到的point将成为String数组,将其读取后存进List当中
List<Point> list=new ArrayList<Point>();
for(String value:arg1)
{
Point point=new Point();
String[] params=value.split(",");
int x=Integer.parseInt(params[0]);
int y=Integer.parseInt(params[1]);
point.setX(x);
point.setY(y);
list.add(point);
}
return list;
显示方法也是相同。
另外,struts支持另外一种对类的直接赋值,
<s:textfield name="point.x" label="point"></s:textfield>
<s:textfield name="point.y" label="point"></s:textfield>
此时不用配置任何文件,struts会默认地将x,y的值传到point当中构造出相应的Point类,但是此方法对类有一要求,即该类要有默认的构造函数,否则将会失败。在输出显示的时候,要重写该类的toString()方法,否则输出的是实例,而不是按自己要求的输出
- 浏览: 787362 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
发表评论
-
struts2的result属性
2014-06-08 22:59 888在action的指定方法执行 ... -
struts2生成登陆验证码
2014-06-08 22:55 1734原文地址:http://www.cnblogs.com/do ... -
前台接收后台返回流
2014-06-08 22:49 2340很多时候,我们需要前台接收后台返回的流,比如图片。 当然, ... -
json格式依赖包
2014-06-07 22:26 745json是比较简单的数据交换格式,一般的,我们都会用到类似如 ... -
Struts2获取request三种方法
2014-06-04 00:23 1115Struts2获取request三种方法 strut ... -
Struts2标签
2013-08-28 22:33 584Struts2常用标签总结 一 介绍 1.Struts2的作用 ... -
Struts2标签
2013-08-28 22:20 604要在jsp中使用Struts2的标志,先要指明标志的引入。通过 ... -
Struts2标签
2013-08-28 22:16 583要使用Struts2的标签,只 ... -
增加提示
2013-08-13 22:12 754首先,我们先配置一个HelloWorld程序 环境的搭建和前面 ... -
Struts2.1.6启动报错
2013-07-23 21:57 846准备好好复习web开发技术,于是自己开发搭建环境,可是刚开 ... -
Struts2笔记
2013-07-19 21:39 849jre不包含调试,j ... -
struts2详解
2013-03-27 12:18 975解决在断网环境下,配置文件无提示的问题我们可以看到Struts ... -
Struts2学习笔记
2012-11-17 10:50 8831.在实际操作中学习,效果更佳。struts1出现的比webw ... -
Struts 2+Jquery+JSON 登陆验证
2012-11-17 10:38 1283要Struts2支持JSON,需要加进一个叫jsonplugi ... -
struts2支持json
2012-11-17 10:18 1046strut2要支持json的插件,必须继承json-defau ...
相关推荐
这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...
在实际项目中,自定义类型转换器可能用于处理如日期格式、货币格式、枚举类型等特殊数据类型的转换。例如,我们可以创建一个转换器处理日期输入,将用户输入的"yyyy-MM-dd"格式字符串转换为Java的`java.util.Date`...
Struts2通过自定义类型转换器,能够自动将这些字符串转换为相应的数据类型。 在描述中提到的博客链接(由于实际无法访问,以下内容基于Struts2类型转换器的通用知识)通常会详细解释如何创建和注册自定义类型转换器...
1. **内置转换器**:Struts2提供了一系列内置的转换器,如StringToBooleanConverter、StringToDateConverter等,可以处理常见的数据类型。 2. **自定义转换器**:如果需要处理特殊类型或有特定转换规则,可以通过...
在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者自定义类型转换器,以满足特定业务逻辑的需求。本文将深入探讨...
在处理HTTP请求时,由于HTTP协议规定所有参数都以字符串形式传递,因此Struts2提供了一种称为类型转换的机制,以便将这些字符串转换为应用程序所需的其他数据类型,如int、Date等。这个过程在Struts2中是自动的,...
在Struts2中,类型转换是处理用户输入数据的关键环节,它允许开发者将前端表单提交的数据转换为服务器端可处理的类型。在本案例中,我们将深入探讨“struts2注册转换器”,特别是如何将特定的日期格式如"20110202...
在Struts2中,类型转换是一项关键功能,它允许框架将用户输入的数据自动转换为应用程序需要的特定数据类型。这篇博客文章可能是关于Struts2内部的类型转换机制及其使用的探讨。 在Struts2中,类型转换是通过`...
在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...
在描述中提到的"interceptor"文件,很可能包含了关于拦截器(Interceptor)的配置或示例代码,因为拦截器是Struts2中实现类型转换的关键组件之一。 Struts2的拦截器是一种AOP(面向切面编程)的概念,它们可以拦截...
总的来说,Struts2的类型转换器机制为处理复杂数据类型提供了便利,使得我们可以根据需求自由定制数据转换逻辑,保证了从HTTP请求到业务逻辑处理之间的数据一致性。通过自定义类型转换器,我们可以更好地控制数据...
在Struts2中,自定义类型转换器通常需要实现`org.apache.struts2.util.TypeConverter`接口,并覆盖`convertValue`和`convertToString`方法。`convertToString`方法在某些场景下会被调用,比如在显示错误消息时,需要...
Struts2提供了许多内置的类型转换器,可以满足大部分常见数据类型的转换需求。但是,对于某些特殊的数据类型或复杂的业务逻辑,可能需要开发者自定义转换器。 #### 五、自定义类型转换器 1. **实现接口**: - ...
然而,当需要对自定义对象或者特殊的数据类型进行转换时,就需要自定义类型转换器。 **局部自定义类型转换**: 如果你只想为特定的Action中的某个字段创建类型转换器,你需要创建一个类继承自`StrutsTypeConverter`...
最后,"全局类型转换器"是Struts2提供的一个高级特性,用于处理数据类型的转换。`14_传智播客struts2.1视频教程_全局类型转换器.rar`会解释如何创建自定义的类型转换器,并将其注册为全局转换器,以便在整个应用中...
总的来说,Struts2.0的属性转换器是框架中不可或缺的一部分,它简化了数据类型转换的过程,提高了代码的可维护性和复用性。通过自定义转换器,开发者可以更好地控制数据处理逻辑,满足项目中的各种复杂需求。了解和...
Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。在Struts2中,转换器...通过实践"Struts2例子6",开发者可以更深入地了解Struts2框架的工作原理,提高处理复杂数据类型转换的能力。
Struts2自动将请求参数转化为Action属性的类型,但也可以自定义类型转换器以处理特殊的数据格式。 9. **Struts2的安全问题**: 虽然Struts2强大且灵活,但也曾曝出过安全漏洞,如S2-005、S2-016等。开发者应当...
自定义转换器使得Struts框架更加灵活,能够处理复杂或特殊的数据类型,提高了代码的可维护性和用户体验。通过编写自定义转换器,开发者可以确保数据转换过程符合业务规则,减少因类型不匹配导致的错误。在实际开发中...
然而,有时默认的数据类型转换可能无法满足需求,比如日期格式、货币格式等特殊数据类型,这时候就需要自定义转换器来介入。 自定义转换器的实现主要分为以下几步: 1. **创建转换器类**:继承`org.apache.struts2...