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()方法,否则输出的是实例,而不是按自己要求的输出
- 浏览: 753251 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 855在action的指定方法执行 ... -
struts2生成登陆验证码
2014-06-08 22:55 1698原文地址:http://www.cnblogs.com/do ... -
前台接收后台返回流
2014-06-08 22:49 2285很多时候,我们需要前台接收后台返回的流,比如图片。 当然, ... -
json格式依赖包
2014-06-07 22:26 698json是比较简单的数据交换格式,一般的,我们都会用到类似如 ... -
Struts2获取request三种方法
2014-06-04 00:23 1076Struts2获取request三种方法 strut ... -
Struts2标签
2013-08-28 22:33 547Struts2常用标签总结 一 介绍 1.Struts2的作用 ... -
Struts2标签
2013-08-28 22:20 567要在jsp中使用Struts2的标志,先要指明标志的引入。通过 ... -
Struts2标签
2013-08-28 22:16 553要使用Struts2的标签,只 ... -
增加提示
2013-08-13 22:12 729首先,我们先配置一个HelloWorld程序 环境的搭建和前面 ... -
Struts2.1.6启动报错
2013-07-23 21:57 813准备好好复习web开发技术,于是自己开发搭建环境,可是刚开 ... -
Struts2笔记
2013-07-19 21:39 813jre不包含调试,j ... -
struts2详解
2013-03-27 12:18 946解决在断网环境下,配置文件无提示的问题我们可以看到Struts ... -
Struts2学习笔记
2012-11-17 10:50 8551.在实际操作中学习,效果更佳。struts1出现的比webw ... -
Struts 2+Jquery+JSON 登陆验证
2012-11-17 10:38 1246要Struts2支持JSON,需要加进一个叫jsonplugi ... -
struts2支持json
2012-11-17 10:18 1015strut2要支持json的插件,必须继承json-defau ...
相关推荐
十、类型转换 57 1.基于Action的直接属性转换 57 2.基于Action的间接属性vo转换 59 十一、注解配置 59 十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及...
(2) 用户注册,需要通过Struts2字段校验判断用户注册页面中的用户名、密码、年龄、出生日期、邮箱等是否符合校验规则,并对自定义校验器要求密码必须包含数字、字母以及两个以上的特殊字符(!@#$%^&*)。 (3) 对用户...
Action、拦截器、验证及类型转换方面都有注释。 插入: 只要把插件JAR文件放到\WEB-INF\lib目录中,即可轻松安装Struts 2插件,不需要手动配置。 · 便于与Spring集成: Struts 2 Action能够感知Spring(Spring-aware...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3输入校验 123 6.3.1输入校验的必要性 123 6.3.2编程方式实现输入校验 125 6.3.3...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
2. 深入 STRUTS架构..................................................................................37 2.1. 随便谈谈......................................................................................
2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................
答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。 String和StringBuffer的区别? 答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新...
{1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...
为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法: book.author.name //全部使用点语法 book["author"].name book.author["name"] //混合使用点语法和方括号语法 book["author"]["name"] //全部使用...
16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
15.4. Struts 15.4.1. ContextLoaderPlugin 15.4.2. ActionSupport 类 15.5. Tapestry 15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - ...
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...
15.4. Struts 15.4.1. ContextLoaderPlugin 15.4.2. ActionSupport Classes 15.5. Tapestry 15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制...
15.4. Struts 15.4.1. ContextLoaderPlugin 15.4.2. ActionSupport Classes 15.5. Tapestry 15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制...