您的位置:首页 > 编程语言 > Java开发

总结2:Struts2类型转换

2008-08-21 21:53 429 查看
在html表单中的文本框里输入的不管是数值类型还是字符类型,最后都是以String类传到后台。如果后台bean的属性是int、double、Date等,Struts2就会自动把字符类型转换成相应的类型。

一.局部类型转换

[/b]1.名称格式:action类名+-conversion.properties
2.位置:放在与之相对应action类的同包下
3.properties文件内容格式:转换属性=转换处理类
4.转换处理类:继承StrutsTypeConverter实现convertFromString方法和convertToString方法
5.具体处理流程:
(1)输入:HTML表单提交—Action类处理—执行属性setter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用其中convertFromString转换方法-把返回值通过setter方法给action中属性赋值。
(2)输出:Action类处理—执行属性getter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用其中convertToString转换方法-把返回值通过getter方法输出到页面。

二.全局类型转换(页面中所有用到改bean的都会被类型转换)[/b]
1.名称格式:xwork-conversion.properties
2.位置:src根目录下
3.properties文件内容格式:bean类=转换处理类

三.主要代码
[/b]

1、xwork-conversion.properties(全局)

com.test.bean.Point=com.test.converter.PointConverter
2.PointAction-conversion.properties(局部)
point=com.test.converter.PointConverter
3.转换类
package com.test.converter;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.test.bean.Point;

public class PointConverter3 extends StrutsTypeConverter
{
@Override
public Object convertFromString(Map context, String[] values, Class toClass)
{
List<Point> list = new ArrayList<Point>();

for(String value : values)
{
Point point = new Point();

String[] paramValues = value.split(",");

int x = Integer.parseInt(paramValues[0]);
int y = Integer.parseInt(paramValues[1]);

point.setX(x);
point.setY(y);

list.add(point);
}
return list;
}

@Override
public String convertToString(Map context, Object o)
{
List<Point> list = (List<Point>)o;

StringBuilder sb = new StringBuilder();

sb.append("[ ");

int number = 0 ;

for(Point point : list)
{
++number;

int x = point.getX();
int y = point.getY();

sb.append(number).append(" x = ").append(x).append(" , y = ").append(y).append(" ");
}

sb.append("]");

return sb.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: