日期:2014-05-20  浏览次数:20756 次

struts 有什么好办法处理ActionForm中Date对象
我用的是struts 1.3
好像在struts中需要录入数据,但是struts不支持对Date对象的解析,大家有什么好办法去将string转换成Date吗?


------解决方案--------------------
Validator里有现成的验证实例。验证通过了就可以把String转成Date了。
------解决方案--------------------
用个javabean比较好做的。也更加方便点。
javabean里面用java.sql.Data
------解决方案--------------------
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd");
String s="1998-01-02";
Date date = formatter.parse(s);

------解决方案--------------------
探讨
用个javabean比较好做的。也更加方便点。
javabean里面用java.sql.Data

------解决方案--------------------
一般看来 是弄一个Converter 专门处理java.util.Date

主要代码如下UtilDateConverter.java
Java code


public class UtilDateConverter implements Converter {
    
    private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

    public Object convert(Class type, Object value) {
        if (value == null) {
            return value;
        }
        if (value instanceof Date) {
            return value;
        }
        if (value instanceof String) {
            try {
                return format.parse((String)value);
            } catch (ParseException ignore) {
            }
        }
        return null;
    }

}

------解决方案--------------------
测试了下,如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,Struts才可以转换。

------解决方案--------------------
差一点点忘了,这个依赖于commons-beanutils包。我都是在form-〉vo这个时候用beanutils自动转换的,试了才知道原来struts也在用beanutils做转换,而且转换成功就赋值给ActionForm。
------解决方案--------------------
探讨
一般看来 是弄一个Converter  专门处理java.util.Date

主要代码如下UtilDateConverter.java
Java code


public class UtilDateConverter implements Converter {

private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

public Object convert(Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof Date) {


------解决方案--------------------
只要在数据库里 把 日期都定义为了 varchar(20) 了, 在页面做验证就可以了。。那样就不用那么麻烦了