接着我们要创建action来处理用户的输入数据
4 创建action
private 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;
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public String execute() throws Exception {
return SUCCESS ;
这里Action最好是继承ActionSupport类 public class PointConverterAction extends ActionSupport
因为ActionSupport本身已经实现许多我们经常要实现的功能,这样可以给我们省很多事情,有时只需简单的覆盖它的一些方法就可以实现相应的功能
5,创建类型装换器
我们可以通过查看struts2的api获得以下信息
java。lang。object
|---ognl。DefaultTypeConverter
|--org.apache.struts2.util.StrutsTypeConverter
最原始的的转换器需要实现TypeConverter
而ognl下的defaulttypeconverter已经给我们实现了这个接口,而struts2又提供给了我们一个更加简单的实现类StrutsTypeConveter
所以我们有两种基本的方法编写类型转换器
1.继承DefaultTypeConverter类
2。继承StrutsTypeConverter类
下面分别给出两种方法的实现
1.
package com.yxy.converter;
import java.util.Map;
import com.yxy.bean.Point;
import ognl.DefaultTypeConverter;
public class PointConverter extends DefaultTypeConverter {
public Object convertValue(Map context, Object value, Class toType) {
if(Point.class == toType) {
Point point = new Point() ;
String[] paramValue = (String[])value ;
String[] pointValue = paramValue[0].split(",") ;
int x = Integer.parseInt(pointValue[0]) ;
int y = Integer.parseInt(pointValue[1]) ;
point.setX(x) ;
point.setY(y) ;
return point ;
}
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 ;
}
}
2.
package com.yxy.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.yxy.bean.Point;
public class PointConverter2 extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toClass) {
Point point = new Point() ;
String[] paramValues = values[0].split(",") ;
int x = Integer.parseInt(paramValues[0]) ;
int y = Integer.parseInt(paramValues[0]) ;
point.setX(x) ;
point.setY(y) ;
return point ;
}
public String convertToString(Map context, Object o) {
Point point = (Point)o ;
int x = point.getX() ;
int y = point.getY() ;
String result = "[ x = " + x + ", y = "+y + "]";
return result ;
}
}
这两个方法可以实现双向的转换,即从用户端到服务器端和服务器端到用户端,其实很明显也是需要这样设计的
6,编写属性文件
现在已经编写好了相应的类型转换器,我们需要将利用属性文件使用它
在action的同一个目录下面放置属性配置文件,命名规则是***-conversion。properties,其中***为action的名字,后面的对于所有局部类型转换器都一样(关于局部和全局稍后再讲)
在属性文件里面编写下面一行代码,其中point指定的是action中需要被转换的属性名,后面很明显表示转换器所在的完整类
point=com.yxy.converter.PointConverter
这里强调主要是考虑到与后面全局类型转换器进行编写上的比较
7,编写struts。xml文件
因为所有应用的业务文件都已经编写完了,这时我们需要将所有的流程进行控制,这样就需要用到struts.xml,
<?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="struts2" extends="struts-default">
<action name="PointConverter" class="com.yxy.action.PointConverterAction">
<result name="success">/output.jsp</result>
<result name="input">/input.jsp</result>
</action>
</package>
</struts>
代码如上,这里定义了返回页面,对应于相应的返回字符串
8,编写输出页面output。jsp
转换后的信息需要输出,
point:<s:property value="point" /><br>
age:<s:property value="age" /><br>
username:<s:property value="username" /><br>
birthday:<s:property value="date" />
这样,所有的工作就完成了,呵呵
未完待续。。。。。。。。。。。。
补充:
对于全局类型转换配置文件:
命名规则:xwork-conversion.properties
内容:com.yxy.bean.Point = com.yxy.converter.PointConverter2
其中前面表示在应用中需要转换的类,在局部类型转换中表示的是某个action中需要被转换的属性,注意比较,
后面表示完成这个类类型转换的类,同局部类型转换一样
如果需要转换的类型为Map,List等集合类,将相应的类型转换类改变即可
分享到:
相关推荐
关于struts2的类型转换的处理方法。
struts2类型转换和国际化 根据自己所做实例 详细介绍
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 实验环境与设备: 已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个...
这是一个关于struts2的类型转换 以及 拦截器 还有校验的例子
struts2转换 json
Struts2处理类型转换错误,全局处理,如处理时间转换错误
自己用struts2写的一个简单的局部数据类型转换实例,适合初学者
struts2 类型转换 数据校验
struts2类型转换 http://d.download.csdn.net/down/504226/sunrain_gao
struts2类型转换机制
这是一个struts2的类型转换器的案例,主要是写的如果将一个20110202这种类型的日期格式进行转换!
使用struts2提供的转化器,实现Date类型的数据转换
NULL 博文链接:https://cdxs2.iteye.com/blog/1931878
适合struts2入门使用,主要是struts拦截到的数据类型转换的问题
对于Struts1和Struts2中都讲到了自定义类型转换器。但是有些人可能对自定义类型转换器的运行原理不理解,这里进行简单介绍一下……
一个struts2的用户管理实例,涉及增删改查。 主要用到的技术: 1.struts2 2.国际化 3.类型转换 4.struts标签
配合博文:http://blog.csdn.net/u011638419/article/details/41276445
struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2