基于Struts 2的自定义类型转换器

简介:

如果上面的类型转换器都是基于DefaultTypeConverter类实现的,基于该类实现类型转换器时,将字符串转换成复合类型要通过convertValue方法实现,将复合类型转换成字符串也是通过convertValue方法实现的,因此我们必须先通过toType参数来判断转换的方向,然后分别实现不同转换方向的转换逻辑。

 

为了简化类型转换器的实现, Struts 2 提供了一个 StrutsTypeConverter 抽象类,这个抽象类是 DefaultTypeConverter 类的子类。 StrutsTypeConverter 类简化了类型转换器的实现,该类已经实现了 DefaultTypeConverter convertValue 方法。实现该方法时,它将两个不同转换方向替换成不同方法 当需要把字符串转换成复合类型时,调用 convertFromString    抽象方法;当需要把复合类型转换成字符串时,调用 convertToString 抽象方法。图 4.5 显示了转换方向和方法之间的对应关系。

 

理解了上面转换方向和方法之间的对应关系,我们可以更简单地实现自己的类型转换器,让自己的类型转换器继承StrutsTypeConverter类,并重写convertFromString方法和convertToString方法。

下面是基于StrutsTypeConverter实现的类型转换器代码。

程序清单:codes\04\4.1\StrutsTypeConverter\WEB-INF\src\org\crazyit\app\converter\UserConverter.java

public class UserConverter extends StrutsTypeConverter

{

     //实现将字符串类型转换成复合类型的方法

     

          

     

          //创建一个User实例

          

          //只处理请求参数数组第一个数组元素,

          //并将该字符串以英文逗号分割成两个字符串

          

          //User实例赋值

          

          

          //返回转换来的User实例

          

     

     //实现将复合类型转换成字符串类型的方法

     

     

          //将需要转换的值强制类型转换为User实例

          

          

               

     

}

通过继承StrutsTypeConverter类来实现类型转换器,分别实现convertFromStringconvertToString方法,这两个方法分别代表不同的转换逻辑——程序逻辑更加清晰。实际上就是将原来的convertValue方法拆分成两个方法。convertFromString方法参数与DefaultTypeConverter类中convertValue方法参数意义相同,注册该类型转换器的方法也和前面完全相同,此处不再赘述。

 

 

本文转自 

fkJava李刚 51CTO博客,原文链接:http://blog.51cto.com/javaligang/874444 ,如需转载请自行联系原作者

相关文章
|
8月前
|
安全 Java 编译器
Java注解(一) 注解的属性,格式,说明
Java注解(一) 注解的属性,格式,说明
70 0
|
11月前
|
Java Spring
springmvc自定义类型转换器解决Date类型转换
springmvc自定义类型转换器解决Date类型转换
SpringMVC - 数据绑定(自定义数据转换器:PropertyEditor、Formatter、Converter)(三)
SpringMVC - 数据绑定(自定义数据转换器:PropertyEditor、Formatter、Converter)(三)
149 0
|
前端开发 Java 开发者
springMVC类型转换
springMVC类型转换
165 0
|
前端开发 Java
Struts2实现类型转换器(十五)下
Struts2实现类型转换器(十五)
Struts2实现类型转换器(十五)下
|
前端开发 API
Struts2实现类型转换器(十五)上
Struts2实现类型转换器(十五)
201 0
Struts2实现类型转换器(十五)上
|
前端开发
SpringMVC的类型转换器和数据格式化(九)下
SpringMVC的类型转换器和数据格式化(九)
213 0
SpringMVC的类型转换器和数据格式化(九)下
SpringMVC的类型转换器和数据格式化(九)上
SpringMVC的类型转换器和数据格式化(九)
213 0
SpringMVC的类型转换器和数据格式化(九)上
|
前端开发 Java
SpringMVC的类型转换器和数据格式化(九)中
SpringMVC的类型转换器和数据格式化(九)
150 0
SpringMVC的类型转换器和数据格式化(九)中
|
Java Apache Maven
struts 结果类型
FreeMarker 一个模板引擎 即 FreeMarkergithub https://github.com/apache/freemarker网址 https://freemarker.apache.
1005 0