struts2学习笔记(4)——数据类型转换
来源:互联网 发布:怎样下载英语软件 编辑:程序博客网 时间:2024/06/09 23:44
回过头来看昨天的那个例子。
在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改。
首先在input.jsp页面中修改几个输入框。
<s:textfield name="point1" label="point1"></s:textfield>
<s:textfield name="point2" label="point2"></s:textfield>
<s:textfield name="point3" label="point3"></s:textfield>
这样可以在输入界面中增加几个输入框。
接着修改ConverterAction类:
private Point point1;
private Point point2;
private Point point3;
增加set和get方法。
接着修改output.jsp页面。
point1:<s:property value="point1"/><br/>
point2:<s:property value="point2"/><br/>
point3:<s:property value="point3"/><br/>
最重要的是需要配置属性文件ConverterAction-conversion.properties,修改成如下内容:
point1=cn.tshining.converter.PointConverter
point2=cn.tshining.converter.PointConverter
point3=cn.tshining.converter.PointConverter
根据上次课所学应该可以很轻松地分析出来……
但是如果有多个类需要转换,那么用之前的方法就要为每个 类写一个属性文件。有什么方法可以简单一点呢?那么我们使用的就是全局类型转换。
全局类型转换就是将转换配置信息写到一个特有的文件中,文件名为xwork-conversion.propreties
内容为:
cn.tshining.beans.Point=cn,tshining.converter.PointConverter
等号左边为要转换的类,右边为用什么类进行转换。
这个文件得放在什么地方呢?这个文件必须放在和struts.xml同目录下。
接下来回到PointConverter类。有没有其他的实现方法呢?这个类还可以继承StrutsTypeConverter类,以及覆盖其方法convertFromString()和convertToString(),方法逻辑和之前类似。这里不再叙述。
那么struts2框架可以转换集合类型吗?答案是肯定的,通过这个例子可以很清楚的看到:
现在我要转换List<Point>这个集合,改怎么做呢?
首先修改ConverterAction类,定义字段private List<Point> point;,然后生成set和get方法。
接着修改input.jsp页面
<s:textfield name="point" label="point1"></s:textfield>
<s:textfield name="point" label="point2"></s:textfield>
<s:textfield name="point" label="point3"></s:textfield>
由于Point现在是一个集合,所以上面文本字段的name是一样的。
修改output.jsp页面:
point:<s:property value="point"/><br/>
同样,由于Point是集合,所以只用一个输出就可以了。
修改PointConverter类:
public class PointConverter3 extends StrutsTypeConverter {@Override
public Object convertFromString(Map context, String[] value, Class toType) {List
list = new ArrayList (); for (String str : value) {
Point point = new Point();
String[] param = str.split(",");
int x = Integer.parseInt(param[0]);
int y = Integer.parseInt(param[1]);point.setX(x);
point.setY(y);list.add(point);
}return list;
}
@Override
public String convertToString(Map context, Object value) {List
list = (List ) value; StringBuilder sb = new StringBuilder();
for (Point point : list) {
int x = point.getX();
int y = point.getY();sb.append("[ x = ").append(x).append(" , y = ").append(y).append(
" ] ");}
return sb.toString();}
}
最后修改properties文件,注意,在此,只能使用局部配置文件,将全局配置文件注释,修改局部配置文件为如下内容:
point=cn.tshining.converter.PointConverter
关于类型转换基本上结束了,最后,有什么方法可以不需要类型转换就可以获得用户输入吗??
将Action中Point修改为原来的private Point point;
在Point中覆盖toSting()方法。然后注释所有的属性文件。
<s:textfield name="point.x" label="x"></s:textfield>
<s:textfield name="point.y" label="y"></s:textfield>
如此即可以不用进行数据类型转换。
在此,Point类必须有不带参数的构造方法才可以成功得到输入。
虽然这种方法比较简便,但是却增加了表单项,在某种意义上不建议使用。
以上便是今天学习的类型转换的知识。
- struts2学习笔记(4)——数据类型转换
- Struts2 学习笔记——数据类型转换
- Struts2学习(第七篇)——数据类型转换详解
- php——学习笔记,转换数据类型
- 黑马程序员—Java基础学习笔记之数据类型转换(自动转换和强制转换)
- struts2学习笔记(二)——类型转换
- Struts2 入门学习笔记(三)——数据转换
- struts2学习笔记(3)——struts2的局部类型转换
- Struts2总结---数据类型转换详解 (4)
- PHP学习笔记——数据类型之间转换和检测;
- js学习笔记(三)数据类型转换
- Javascript学习笔记(二) -- 数据类型和数据类型转换
- 学习笔记——struts2标签时间转换
- Struts2学习笔记(八)——类型转换
- Struts2基础学习之数据类型转换
- C#学习笔记-数据类型转换
- Qt学习笔记 数据类型转换
- Javascript学习笔记(数据类型转换)
- oracle实例名,数据库名,服务名等概念区别与联系
- MySQL InnoDB 存储引擎 基本参数
- IDC:IT业2013年前将有580万个新工作岗位
- FLASH Flex输入框不支持输入中文的问题
- flash特效原理:图片滑动放大效果
- struts2学习笔记(4)——数据类型转换
- 排序算法集合(3)- 快速排序原理及C#实现
- 防止sql注入,跨站脚本
- Ogitor编译
- C优先级的口诀
- box2d系列之创建b2Revolutejoint
- 整型到底占几个字节呢?
- 继续摘抄:一些做人做事的经验
- MFC 中实现窗口淡入淡出、逐步放大显示效果