`
wjt276
  • 浏览: 650473 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

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中实现从采集字符串到日期的转换会节省很多时间,我们只需关注域对象间的转换就可以啦。

分享到:
评论

相关推荐

    struts2类型转换和国际化

    在Struts2中,类型转换和国际化是两个重要的特性,用于处理数据类型之间的转换以及多语言环境下的内容显示。 **类型转换**是Struts2处理请求参数与Action类属性之间数据类型不匹配的过程。当用户通过表单提交请求时...

    Struts2实例 国际化 类型转换 struts标签

    例如,用户输入的字符串可以自动转换为整数或日期。如果Struts2内置的转换器无法满足需求,开发者还可以自定义转换器。 Struts2标签库是其强大的视图层工具,简化了JSP页面的编写。例如: 1. `&lt;s:form&gt;`:创建表单...

    struts2 转换器

    例如,如果一个字段是整型,Struts2会尝试将字符串转换为Integer。 2. **自定义转换器**:如果默认的类型转换不满足需求,我们可以创建自定义的转换器类。这个类需要实现`Converter`接口,并覆盖`convert`方法。...

    struts1.x 最简洁国际化 源代码

    - 在Java中,资源包是包含本地化字符串和其他可配置资源的文件。对于Struts1,这些通常以`.properties`格式存储,例如`messages.properties`,`messages_zh_CN.properties`(中文简体)等。 2. **Locale对象**: ...

    Struts_2.0从入门到精通

    Struts2.0还提供了参数化的国际化字符串,使得在不同场景下灵活使用多语言文本成为可能。 五、转换器(Converter)在Struts2.0中的作用 转换器是Struts2.0框架中的一个重要概念,它负责将请求参数转换为Java类型的...

    Struts的jar包

    6. `commons-lang3-3.1.jar`:Apache Commons Lang库,提供了许多Java语言层面上的实用工具类,如字符串操作、数组处理等,为Struts2提供便利的工具支持。 7. `ognl-3.0.6.jar`:Object-Graph Navigation Language...

    struts2api.zip

    例如,`execute()`方法用于执行特定的操作,返回一个字符串表示视图的跳转路径。 2. **Interceptor拦截器**:拦截器是Struts2的一个强大特性,允许在Action调用前后插入自定义逻辑。常见的拦截器如`...

    struts2教程word文档格式

    5. **转换器Converter**:Struts2允许自定义转换器来处理数据类型转换,比如将用户输入的字符串转换为日期或数字,确保数据的正确性和一致性。 6. **表单数据验证**:Struts2提供了强大的内置验证框架,可以在...

    struts2.3.1的lib

    11. **commons-lang3.jar**:Apache Commons Lang库,提供了一些高级的字符串和对象操作工具。 12. **javassist.jar**:Javassist是一个字节码处理库,用于在运行时动态修改类或接口。 以上jar包只是Struts2.3.1 ...

    struts2学习笔记

    在实际应用中,常常会继承Struts2提供的StrutsTypeConverter类,覆盖convertFromString和convertToString方法,以便更灵活地进行字符串到对象以及对象到字符串的转换。 三、Struts2输入校验 Struts2提供了两种主要...

    struts2生成中文验证码的Action

    5. **存入Session**: 生成的验证码图像和其对应的文本字符串需要存入用户的session,以便后续验证时使用。同时,也可以设置一个过期时间,避免长时间未使用的验证码被重复使用。 6. **处理验证请求**: 当用户输入...

    Struts2.1.8所需要的所有的jar文件

    7. **commons-lang-2.3.jar**:Apache Commons Lang提供了一些高级字符串和对象处理的工具类,如类型转换、日期和时间操作等,对Struts2的功能增强起到了辅助作用。 8. **ognl-2.7.3.jar**:OGNL(Object-Graph ...

    struts2的工具jar包

    7. **Commons Lang**: `commons-lang3-3.2.jar` 是Apache Commons项目的一部分,提供了一些Java语言的扩展,如字符串处理、日期时间操作、反射等,是Java开发中常用的工具类库。 8. **Commons IO**: `commons-io-...

    struts1.2 国际化

    `MessageFormat` 类用于格式化和解析带参数的消息字符串,以便根据不同的 `Locale` 显示不同的文本。 - **格式化消息**:使用 `MessageFormat.format(String pattern, Object... arguments)` 方法可以将消息模板中...

    struts2下实现了图片验证码

    该类封装了生成随机字符串和将字符串渲染为图像的过程。 - **随机字符串生成**:使用`Random`类生成随机数字作为验证码文本。 - **图像渲染**:使用`BufferedImage`和`Graphics`类来绘制图像。具体过程如下: - ...

    struts2课件

    - **转换器(Converter):**用于将字符串转换为特定类型的对象,提高数据处理效率。 - **输入校验:**提供灵活的输入验证机制,支持多种形式的数据校验规则。 - **拦截器(Interceptor):**用于处理横切关注点,...

    struts-2.3.32必备的jar包

    5. **commons-lang3-3.2.jar**:Apache Commons Lang是一个提供了一系列实用工具函数的库,帮助开发者处理字符串、日期、数组等基本对象的操作。在Struts2中,这些工具函数被广泛应用于各个角落。 6. **ognl-3.0.19...

    struts 2.3.4.1 jar

    5. **Apache Commons Lang3** (`commons-lang3-3.1.jar`): 这个库提供了大量的Java语言工具类,增强了标准库的功能,例如字符串处理、日期/时间操作等,对开发高效代码非常有帮助。 6. **OGNL (Object-Graph ...

    Struts2学习文档

    - **实现方式**:演示如何创建一个类型转换器,用于将字符串转换成User对象。 - **5.4.2 User数组属性类型转换器,有多个String需要转换为User类型** - **实现方式**:如果需要将多个字符串转换成User对象数组,...

    Struts2的总结和Strut2集成Spring

    Struts2提供了转换器机制,用于将HTTP请求中的字符串转换为Action类中的属性类型,确保了数据的一致性和准确性。 #### Struts2拦截器 拦截器是Struts2的核心机制之一,它可以在请求处理的各个阶段进行拦截,执行...

Global site tag (gtag.js) - Google Analytics