开发者社区> 技术小牛人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

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

 

为了简化类型转换器的实现,Struts 2提供了一个StrutsTypeConverter抽象类,这个抽象类是DefaultTypeConverter类的子类。StrutsTypeConverter类简化了类型转换器的实现,该类已经实现了DefaultTypeConverterconvertValue方法。实现该方法时,它将两个不同转换方向替换成不同方法当需要把字符串转换成复合类型时,调用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 ,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringMVC中自定义(日期)类型转换器
SpringMVC中自定义(日期)类型转换器
74 0
自定义负载均衡器
自定义负载均衡器
25 0
Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
方法一 jackson注解 com.fasterxml.jackson.core jackson-annotations 2.
1527 0
Struts2请求数据自动封装和数据类型转换
Struts2请求数据自动封装:   实现原理:参数拦截器 方式1:jsp表单数据填充到action中的属性;    //普通的成员变量,必须给set,get可以不给的。 方式2:jsp表单数据填充到action的对象的属性;   //对象类型,一定给get方法 方式1: 第一步:引包,省去 第二步:配置struts2的过滤器 1 <?xml version="
1209 0
Struts2类型转换
假设有如下的输入界面:     在上面输入abc,xyz模式的字符串,其中abc作为用户的用户名,xyz作为用户的密码,系统希望将上边的字符串转换成一个User实例。      1、LoginAction.
657 0
Qt之创建自定义类型
简述 当使用Qt创建用户界面时,特别是那些带有特殊控制和特征的界面时,开发者通常需要创建新数据类型来扩展或替换Qt现有的的值类型集合。 标准类型,比如:QSize、QColor和QString都可以被存储到QVariant对象中,在基于QObject的类中可用作属性的类型,并且可以在信号-槽通信时发射。 下面,我会创建一个自定义类型,并且说明如何将它集成到Qt的对象模型
992 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载