首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

《研磨struts2》第10一章 类型转换 之 11.3 自定义类型转换器

2013-11-08 
《研磨struts2》第十一章 类型转换 之 11.3 自定义类型转换器11.3??自定义类型转换器11.3.1概述虽然内建类型

《研磨struts2》第十一章 类型转换 之 11.3 自定义类型转换器

11.3??自定义类型转换器

11.3.1概述

虽然内建类型转换器能满足绝大多数的需求,但是,有的时候还是需要使用自定义类型转换器来实现特定的需求。

还是用前面的长方形来说明,如果用两个文本框分别输入长方形的高和宽,整个类型装换都没有问题,它可以工作的很好。

但是,如果我们想在一个文本框内同时输入宽和高(width:height),形如16:9,这个时候就需要自定义类型转换器了。

11.3.2实现自定义类型转换器

自定义类型转换器的实现非常简单,写一个类,继承StrutsTypeConverter抽象类,该类在org.apache.struts2.util包内,这个抽象类有两个方法需要我们实现:

  • public Object convertFromString(Map context, String[] values, Class toClass)方法,实现字符串向对象的转换,它有三个参数:

    l???????? context:转换上下文,可以在里面引用各种对象,比如:可以通过context.get(ValueStack.VALUE_STACK)来引用值栈。

    l???????? values:用户输入的字符串。

    l???????? toClass:将要被转换成的对象类型。

    • public String convertToString(Map context, Object o)方法,实现对象向字符串的转换,它有两个参数:

      l???????? context:同上,也是转换的上下文。

      l???????? o:需要被转换的对象。

      实现示例功能的自定义类型转换器,示例代码如下:

      ?

      图11.1? 示例自定义转换器

      在展示页面上使用的<s:property value="rectangle"/>,就可以显示出自定义类型转换器中convertToString方法的返回值了。

      注意:<s:property value="rectangle"/>这句话会引用自定义类型转换器,因为这时候要把一个字符串转换成Rectangle对象,而前面<s:textfield name=” rectangle.width”/>则不会引用自定义转换器,因为它只是要把一个字符串转换成Rectange对象的width属性而已,实际上只需要转换为int。

      ?

      私塾在线网站原创《研磨struts2》系列

      转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4100.html】

      欢迎访问http://sishuok.com获取更多内容

热点排行