mysql 自定义类型转换,如何自定义类型转换器 ?

问题4. 如何自定义类型转换器 ?

1). 为什么需要自定义的类型转换器 ? 因为 Struts 不能自动完成 字符串 到 引用类型 的 转换.

在java中,基本类型有int,double,float,boolean,char,引用类型就是对象类型,例如数组吖,对象吖,这些

2). 如何定义类型转换器:

StrutsTypeConverter 类--->继承OGNL.defaultTypeConverter---》继承OGNL.TypeConverter

I. 开发类型转换器的类: 所以咋们一般扩展StrutsTypeConverter 类就足够了

1 packagecom.atguigu.struts2.Converter;2

3 importjava.sql.Date;4 importjava.text.DateFormat;5 importjava.text.ParseException;6 importjava.text.SimpleDateFormat;7 importjava.util.Map;8

9 importorg.apache.struts2.util.StrutsTypeConverter;10

11 public class TestTypeConverter extendsStrutsTypeConverter {12

13 /*

14 * 此方法是用来将传进来的字符串数组变成一个Object对象15 *16 *17 */

18 DateFormat dateFormat=new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");19 publicObject convertFromString(Map arg0, String[] arg1, Class arg2) {20 if(arg2==Date.class){21 if(arg1!=null&&arg1.length>0){22 String string=arg1[0];23 try{24 dateFormat.parseObject(string);25 } catch(ParseException e) {26 //TODO Auto-generated catch block

27 e.printStackTrace();28 }29 }30 }31

32 returnarg1;33 }34

35 /*

36 *37 * 此方法是用来回显的时候调用的,将Object对象转换成字符串38 *39 */

40

41 publicString convertToString(Map arg0, Object arg1) {42 //判断是否为Date对象

43 if(arg1 instanceofDate){44 //是的话,就使用format()方法将Date对象转换成一个字符串

45 returndateFormat.format(arg1);46 }47 return null;48 }49

50 }

II. 配置类型转换器:

有两种方式

①. 基于字段的配置:

> 在字段所在的 Model(可能是 Action, 可能是一个 JavaBean) 的包下, 新建一个 ModelClassName-conversion.properties 文件

> 在该文件中输入键值对: fieldName=类型转换器的全类名.

fieldName=类型转换器的全类名

例如下面的:

birth=com.atguigu.struts2.Converter.TestTypeConverter

> 第一次使用该转换器时创建实例.

> 类型转换器是单实例的!

②. 基于类型的配置:

> 在 src 下新建 xwork-conversion.properties

> 键入: 待转换的类型=类型转换器的全类名.

需要转换的类型=转换器全类名

例如下面的:

java.util.Date=com.atguigu.struts2.Converter.TestTypeConverter

> 在当前 Struts2 应用被加载时创建实例.所以若在转换器里有引用Web.xml里的参数时就要注意了,因为 转换器在Struts2在加载时就已经创建实例了,而此时web.xml还没加载呢,所以你在转换器里引用web.xml的资源就为空了,所以一定要做是否非空做出判断,要不要转换器还是起不了作用

-->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值