第四章Struts2中的类型转换
1、将一种类型转换为另一种类型的过程称为类型转换。因为数据在网络之间互相传递是以字符串类型进行传递的,又是需要将其传换为其他可用的数据类型。
2、数据转换分为普通类型的转换,还有自定义类型数据的转换。普通类型的数据转换很简单,而对于自定义的数据类型却无能为力,在Struts2之前,同常会选择Servlet来获取数据,然后根据定义类型进行转换。现在Struts2中可以用OGNL的类型转换器。
3、实现类型转换可以选择基于OGNL表单的方式,首先需要将ognl-x.x.x.jar包导入项目中,因为类型转换时需要使用该包中的TypeConverter接口。在这个接口中定义了一个converValue方法。OGNL还提供了一个实现TypeConverter接口的类DefaultTtypeConverter,如果继承该类,则需要重写convertValue方法,DefaultTypeConverter的定义格式:
Public interface DefaultTypeConverter{
Public object converValue(Map context, Object value, Class toType);
}
三个参数中context参数表示类型转换的上下文环境;value表示需要进行转换的参数,toType表示被转换的膜表类型。
4、在对类型转换器进行全局注册时要使用到Properties文件,而该文件的命名和文件内容都是有一定的规范的。Xwork-convversion.properties。
5、局部类型转换器注册:仅仅正对某个Action起作用,局部类型转换器注册只需要在相应的Action目录下创建一个有规则名称的资源文件即可。ActionName-conversion.properties。其中ActionName表示需要转换的Action类名,后面的是固定格式。在注册局部类型转换器时,如果一个Action类有多个对象,则需要为每个对象都设置一次。
6、全局类型转换器注册:实现全局类型转换器注册需要提供一个xwork-conversion.properties文件,该文件必须存放在src文件夹下。,存储的内容有所不同,规则:复合类型=对应类型转换器,复合类型表示指定需要完成类型转换的复合类;对应类型转换器表示所指定的类型转换器。
使用OGNL表达式可以将用户提交的信息转换为复合类型进行使用。