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

Struts上的文本字符串和日期之间转换

2012-10-09 
Struts下的文本字符串和日期之间转换在Struts中我们经常要处理用户录入的日期字符串,将其转换为java.util.

Struts下的文本字符串和日期之间转换

在Struts中我们经常要处理用户录入的日期字符串,将其转换为java.util.Date类型。在这里我们提供两种方式来实现这样的转换。

1 在ActionForm子类中,创建两个变量来处理日期,一个为Date类型,一个为String类型(临时变量),我们使用String类型的变量来接受用户的录入,再编码将其转换为Date类型,在页面输出时,在根据Date类型生成自定义的文本格式。这种方式灵活性大,不过需要你多付出点劳动。

2 编写一个plugin实现自动转换。Struts下各种对象类型的转换是通过BeanUtils的Converter实现,所以我们只需向 BeanUtils注册一个日期字符转换的Converter即可,这种方式不需要你编写代码进行转换,不过在页面呈现的时候,你可能需要进行格式化,从 Date对象之间生产的字符串(toString())往往不是你需要的,使用JSTL就可以的。

首先编写一个日期转换的Converter类:

import java.text.SimpleDateFormat;import org.apache.commons.beanutils.Converter;import java.util.Set;import java.util.HashSet;import java.util.Iterator;import java.text.ParseException;/*** * 日期转换对象,使用该转换器,在BaseForm当中做一下注册,系统自动地帮助字符的日期表示转换为java.util.Date对象.* @author zizz.* Create Time:2006-9-11 19:11:47.*/public class DateConverter implements Converter {    /**     * 日期格式化对象.     */    private static SimpleDateFormat df = new SimpleDateFormat();        /**     * 模式集合.     */    private static Set<String> patterns = new HashSet<String>();    //注册一下日期的转换格式    static{        DateConverter.patterns.add("yyyy-MM-dd");        DateConverter.patterns.add("yyyy-MM-dd HH:mm");        DateConverter.patterns.add("yyyy-MM-dd HH:mm:ss");        DateConverter.patterns.add("yyyy/MM/dd HH:mm:ss");    }        /**     * 日期转换器.     * @param type Class     * @param value Object     * return Date Object.     */    public Object convert(Class type,Object value){        if(value == null){            return null;        }else if(value instanceof String){            Object dateObj = null;            Iterator it = patterns.iterator();            while(it.hasNext()){                try{                    String pattern = (String)it.next();                    df.applyPattern(pattern);                    dateObj = df.parse((String)value);                    break;                }catch(ParseException ex){                    //do iterator continue                }            }            return dateObj;        }else{            return value;        }    }}

?
然后编写一个Struts的plugin,执行Converter注册:

public class ConvertPlugIn implements PlugIn { public void destroy() { ConvertUtils.deregister(); } public void init(ActionServlet arg0, ModuleConfig arg1) throws ServletException { ConvertUtils.register(new DateConverter(), Date.class); } }

?

最后在struts-config.xml进行plugin声明:
<plug-in className="DateConverter" />

进行日期转换,这对Struts来说是非常有益的。Struts的ActionForm一直被认为是设计的缺陷,但是通过BeanUtils可以快速实现 ActionForm、VO、PO对象之间的转换,这就要求ActionForm设计比较合理,当然在ActionForm中实现从采集字符串到日期的转换会节省很多时间,我们只需关注域对象间的转换就可以啦。

热点排行