[转载] 第二章 struts2类型转换

来源:互联网 发布:jquery hightlight.js 编辑:程序博客网 时间:2024/04/29 22:40

 

一、 struts2类型转换一 

1struts2的类型转换是基于ognl的类型转换。主要实现TypeConverter这个类,它对于类型转换的实现,它描述了一种最通用的情况,所以一般不去实现这个接口,它提供了一个接口实现的类DefaultTypeConverter自己的类继承DefaultTypeConverter重写convertValue方法来完成类型转换
2
convertValue(Map context,Object value,Class toType)web应用程序分为两种情况,一:客户端字符串到自定义类型的转换;二:在页面进行输出时,是从服务器到客户端的转换,即是从自定义类型到字符串的转换。toType是目标类型即如果是String则是第二种情况否则是第一种情况。
3
ActionSupport类实现了接口ActionAction定义了struts2的一个基本模型,里面有ERROR:有错误、INPUT:验证没有成功、LOGIN:没有成功,因为用户没有登录、NONE:表示action操作成功但是不显示任何视图、SUCCESS:成功,它们都对应struts.xml<result>里的name属性的值最好显示写出;最好用Action里的字符串来返回。
4
、写一个属性文件来设定struts2的转换工作。这个属性文件一定要与action在同一个包内。这个属性文件名是:action类名-conversion.properties”
5
、在属性文件里是以keyvalue的性质,keystruts2要转换的属性名,value是转换这个属性的类。当用户要转换多个属性里可以换行加多个。

二、struts2类型转换二

1、当需要转换多个自定义类型的类的化需要全局类型转换。局部类型转换是对某一个特定的类进行转换,而全局的是在当前系统里所有符全要求的进行类型转换。全局类型转换需要在classes目录下建立一个名为xwork-conversion.properties的属性文件(名字不可以更改),在里面写配置信息。形式是:要转换类的名=作为转换器的类。
2
、在属性文件里注释一行用的是“#”号。
3
、不管是全局的类型转换还是局部的类型转换都是用一个类extends DefaultTypeConverter类里的convertValue方法来转换的。而DefaultTypeConverter则是实现了TypeConverter接口来实现类型转换的。
4
struts2类型转换是基于ognl的。struts2提供了一个更加简化的类型转化方式,它本身也是基于ognl实现的。就是类型转换类继承org.apache.struts2.util包里的StrutsTypeConverter类。它是继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter类。StrutsTypeConverter是一个抽象类,在它里是面有convertToString(Map context, Object o)convertFromString(Map context, String[] values, Class toClass)两个抽象方法,分别是从字符串开始转换与转换到字符串。它是struts2类型转换的核心,真正项目是继承StrutsTypeConverter的,而不是继承DefaultTypeConverter
5
StrutsTypeConverter继承DefaultTypeConverter后要去重写convertValue方法,里面toClassString.class进行比较,如果为真则调用convertToString方法否则调用convertFromString方法。
6
、如果用户实现完继承StrutsTypeConverter的类后,只需要添加到属性文件即可。
7
、在struts2中页面也可以把控件的名字写为:类对象名.属性名,这个方式这个类必须提供一个没有参数的构造方法。这种写法对表单会很麻烦,绝对不能有它。
8
、在页面显示一个类的时候,它会默认调用这个类的toString()方法。

原创粉丝点击