锁定老帖子 主题:struts2的类型转换续
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-06
最后修改:2009-02-15
接着我们要创建action来处理用户的输入数据 4 创建action private Point point ; 这里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) {
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) { public String convertToString(Map context, Object o) { } 这两个方法可以实现双向的转换,即从用户端到服务器端和服务器端到用户端,其实很明显也是需要这样设计的
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 代码如上,这里定义了返回页面,对应于相应的返回字符串
8,编写输出页面output。jsp 转换后的信息需要输出, point:<s:property value="point" /><br> 这样,所有的工作就完成了,呵呵
未完待续。。。。。。。。。。。。
补充: 对于全局类型转换配置文件: 命名规则:xwork-conversion.properties 内容:com.yxy.bean.Point = com.yxy.converter.PointConverter2 其中前面表示在应用中需要转换的类,在局部类型转换中表示的是某个action中需要被转换的属性,注意比较, 后面表示完成这个类类型转换的类,同局部类型转换一样
如果需要转换的类型为Map,List等集合类,将相应的类型转换类改变即可
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-02-08
赞一个!我也看过浪曦的视频,楼主的学习方法值得学习!
|
|
返回顶楼 | |
发表时间:2009-02-08
谢谢,你是第一个回帖的哦,真的很感谢,这样让我有信心再继续努力写下去,呵呵
|
|
返回顶楼 | |
发表时间:2009-02-08
楼主先说说你这样做类型转换的意义在那里!
|
|
返回顶楼 | |
发表时间:2009-02-09
kjj 写道 楼主先说说你这样做类型转换的意义在那里!
由于服务器端需要收集用户的输入信息,而用户的输入信息在客户端只会以是字符串类型存在,而用户需要表现出来的类型当然就需要在服务器端首先进行类型转换,变成正确的数据类型后保存在服务器端 |
|
返回顶楼 | |
发表时间:2009-02-11
恕我浅陋
据我所知,struts2 也就是webwork2 会自动转换我们的输入对象, 比如 class someaction extends ActionSupport{ User user; .... public String execute(){ System.out.println(user.age); System.out.println(user.name); return SUCCESS; } } class User{ String name; int age; } |
|
返回顶楼 | |
发表时间:2009-02-11
kjj 写道 恕我浅陋 据我所知,struts2 也就是webwork2 会自动转换我们的输入对象, 比如 Java代码 class someaction extends ActionSupport{ User user; .... public String execute(){ System.out.println(user.age); System.out.println(user.name); return SUCCESS; } } class User{ String name; int age; } class someaction extends ActionSupport{ User user; .... public String execute(){ System.out.println(user.age); System.out.println(user.name); return SUCCESS; } } class User{ String name; int age; } 呵呵,明显我还没有kjj研究的这么深入啊,其实我也只是刚刚接触,在这里做下笔记,关于这些我也去看看,但是我倒是见过在客户端进行输入的表单里面直接使用类似于User.name甚至直接就可以指定该字段是具体一个List类型对象的第几个元素,呵呵,多交流 |
|
返回顶楼 | |
发表时间:2009-02-11
怎么变成这样了,全是 
|
|
返回顶楼 | |
浏览 4579 次