Struts1.2 开发自己的类型转换器

在Struts 1.x中提供了一个类型转换器的功能。 例如:声明一个boolean类型的属性,当把这个属性的值设为Yes,1,on或Y等等时Struts会把它自动的转换成True类型。 但有些类型Struts却无法转换。 例如Date类型的转换: * 如果是java.sql.Date,页面日期格式必须为yyyy-mm-dd,才可以转换 * 如果是java.util.Date,默认情况下Struts无法转换。 解决办法是我们可以设计一个自定义类型转换器。 自定义类型转换器的实现步骤: 1.实现Struts的converter接口,并实现其convert方法。 view plaincopy to clipboardprint? package com.yx.zzg.struts; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.beanutils.Converter; /** * java.util.Date类型转换器 * @author Administrator * */ public class UtilDateConverter implements Converter { public Object convert(Class type, Object value) { System.out.println("UtilDateConverter.value=" + value); if (value == null) { return value; } if (value instanceof Date) { return value; } Date d = null; if (value instanceof String) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { d = sdf.parse((String)value); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return d; } } package com.yx.zzg.struts; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.beanutils.Converter; /** * java.util.Date类型转换器 * @author Administrator * */ public class UtilDateConverter implements Converter { public Object convert(Class type, Object value) { System.out.println("UtilDateConverter.value=" + value); if (value == null) { return value; } if (value instanceof Date) { return value; } Date d = null; if (value instanceof String) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { d = sdf.parse((String)value); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return d; } } 2.注册自定义的类型转换器,即把我们自定义的类型转换器注册到Struts的类型转换器中。 通常有两种方式类实现注册。 第一种方法采用Servlet的方式: 1.首先定义一个Servlet,并覆写他的init方法 view plaincopy to clipboardprint? package com.yx.zzg.struts; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import org.apache.commons.beanutils.ConvertUtils; /** * 注册java.util.date转换器 * @author Administrator * */ public class UtilDateConverterInitWithServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("UtilDateConverterInitWithServlet.init()"); //注册自定义类型转换器 ConvertUtils.register(new UtilDateConverter(), Date.class); } } package com.yx.zzg.struts; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import org.apache.commons.beanutils.ConvertUtils; /** * 注册java.util.date转换器 * @author Administrator * */ public class UtilDateConverterInitWithServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("UtilDateConverterInitWithServlet.init()"); //注册自定义类型转换器 ConvertUtils.register(new UtilDateConverter(), Date.class); } } 2.然后配置web.xml文件便完成了注册。 view plaincopy to clipboardprint? UtilDateConverterInitWithServlet com.yx.zzg.struts.UtilDateConverterInitWithServlet 3 UtilDateConverterInitWithServlet com.yx.zzg.struts.UtilDateConverterInitWithServlet 3 第二种方式采用Struts本身提供的plugin的方式 1.首先定义一个类并实现PlugIn接口,并且实现其方法。 view plaincopy to clipboardprint? package com.yx.zzg.struts; import java.util.Date; import javax.servlet.ServletException; import org.apache.commons.beanutils.ConvertUtils; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; public class UtilDateConverterInitWithPlugin implements PlugIn { public void destroy() { } public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { System.out.println("UtilDateConverterInitWithPlugin.init()"); ConvertUtils.register(new UtilDateConverter(), Date.class); } } package com.yx.zzg.struts; import java.util.Date; import javax.servlet.ServletException; import org.apache.commons.beanutils.ConvertUtils; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; public class UtilDateConverterInitWithPlugin implements PlugIn { public void destroy() { } public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { System.out.println("UtilDateConverterInitWithPlugin.init()"); ConvertUtils.register(new UtilDateConverter(), Date.class); } } 2.然后配置struts-config.xml文件便完成了注册 view plaincopy to clipboardprint? 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zygsee/archive/2010/03/26/5418865.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值