现在的位置: 首页 > 综合 > 正文

Struts2学习笔记之类型转换。

2013年02月14日 ⁄ 综合 ⁄ 共 1024字 ⁄ 字号 评论关闭

好吧。直接进入正题。

...

比如一个Action里的user属性是个User对象。 有name和password两个属性

如果我们传入 user=zhangsan,123这样的属性时,肯定会出错。因为user是个对象。

这样,我们就可以用类型装换了。

写一个类继承StrutsTypeConverter。  代码如下:

package fj.converter;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import fj.model.User;

public class UserConverter extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map arg0, String[] values, Class toClass) {
		String[] data = values[1].split(",");
		User u = new User();
		u.setName(data[0]);
		u.setPassword(data[1]);
		return u;
	}

	@Override
	public String convertToString(Map arg0, Object o) {
		return o.toString();
	}
	
}

这样传过来的属性时zhangsan,123的话我们就可以处理了。

这里要注意一点的是values这个参数是代表输入的属性的值如果有多个的情况所代表的数组。

比如输入  user=zhangsan,123&user=lisi,123这样。 那上面的代码会取出第二个人lisi的数据。

然后具体问题具体分析 .....

还有一点写完了自定义转换类之后需要注册。 有两种注册方法 局部和全局。

全局的话在src目录下建立一个  xwork-conversion.properties文件 里面写入user = fj.converter.UserConverter。

这里的user是action里的一个属性。。

第二种方法是局部注册。在action的包里建立一个的文件。

文件名比如是action名-conversion.properties...

听说还有一种Annotaion的注册方法 。 不过还没研究 ...

在补充一点..

类型转换还有另外一种方式。实现 TypeConverter接口。。。

不常用。 继承StrutsTypeConverter类比较常用 。 嘿嘿 。。

抱歉!评论已关闭.