论坛首页 Java企业应用论坛

『提问』webwork的类型转换的问题(java.util.Date)

浏览 7011 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-22  
在使用webwork过程中遇到了这样一个问题:
我得domain model类包含了一个属性java.util.Date beginTime;
webwork使用的model driven的方式。
界面上需要显示格式是:yyyy-MM-dd HH:mm,但是用<ww:property value="beginTime"/>似乎webwork默认的转换格式是yy-MM-dd,怎样才能得到yyyy-MM-dd HH:mm呢?
   发表时间:2004-12-22  
写一个convert:
public class DateConverter extends DefaultTypeConverter {
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");;

    public Object convertValue(Map ognlContext, Object value, Class toType); {
        Object result = null;
        if (toType == Date.class); {
            result = doConvertToDate(value);;
        } else if (toType == String.class); {
            result = doConvertToString(value);;
        }
        return result;
    }

    private Date doConvertToDate(Object value); {
        Date result = null;

        if (value instanceof String); {
            try {
                result = sdf.parse((String); value);;
            } catch (ParseException e); {
                throw new XworkException("Could not parse date", e);;
            }
        } else if (value instanceof Object[]); {
            // let's try to convert the first element only
            Object[] array = (Object[]); value;
            if ((array != null); && (array.length >= 1);); {
                value = array[0];
                result = doConvertToDate(value);;
            }
        } else if (Date.class.isAssignableFrom(value.getClass(););); {
            result = (Date); value;
        }
        return result;
    }

    private String doConvertToString(Object value); {
        String result = null;
        if (value instanceof Date); {
            result = sdf.format(value);;
        }
        return result;
    }
}


可以添加默认的xwork-default-conversion.properties
java.util.Date=com.javaeye.core.webwork.converter.DateConverter
也可以写在Domain Model的converter配置里面,具体的内容看webwork文档。
0 请登录后投票
   发表时间:2004-12-22  
我自己写了一些tag实现的,有默认的格式,也可以自定义格式
0 请登录后投票
   发表时间:2004-12-22  
日期的:

package com.jscud.www.tag;


import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;

import com.opensymphony.webwork.views.jsp.WebWorkTagSupport;


/*
 * Created Date 2004-12-5
 *
 */

/**
 * Date的格式化显示,默认格式为yy-MM-dd.
 * 
 * @author scud
 *  
 */
public class DateShowTag extends WebWorkTagSupport
{
    private String pattern;

    private String value;

    public int doStartTag(); throws JspException
    {
        try
        {
            JspWriter out = pageContext.getOut();;

            Date aDate = null;
            Object aValue = findValue(value);;
            if (null != aValue);
            {
                aDate = ((Date); aValue);;
            }

            String sRes = "";
            if (null != aDate);
            {
                SimpleDateFormat sdfTemp = new SimpleDateFormat(getPattern(););;
                sRes = sdfTemp.format(aDate);.toString();;
            }

            out.print(sRes);;

            return SKIP_BODY;
        }
        catch (IOException ex);
        {
            ex.printStackTrace();;
            throw new JspException(ex.getMessage(););;
        }
    }

    public void setPattern(String pattern);
    {
        this.pattern = pattern;
    }

    public String getPattern();
    {
        if (null == pattern);
        {
            return getDefaultPattern();;
        }
        else
            return pattern;
    }

    public void setValue(String value);
    {
        this.value = value;
    }
    
    public String getDefaultPattern();
    {
        return "yy-MM-dd";
    }
}


日期时间的:

package com.jscud.www.tag;

/*
 * Created Date 2004-12-5
 *
 */

/**
 * DateTime的Tag. 
 *
 * @author scud
 *
 */
public class DateTimeShowTag extends DateShowTag
{
    public String getDefaultPattern();
    {
        return "yy-MM-dd HH:mm";
    }
    
}
0 请登录后投票
   发表时间:2004-12-22  
eway 写道
在使用webwork过程中遇到了这样一个问题:
我得domain model类包含了一个属性java.util.Date beginTime;
webwork使用的model driven的方式。
界面上需要显示格式是:yyyy-MM-dd HH:mm,但是用<ww:property value="beginTime"/>似乎webwork默认的转换格式是yy-MM-dd,怎样才能得到yyyy-MM-dd HH:mm呢?


webwork cookbook:[url]http://wiki.opensymphony.com/display/WW/How+to+format+dates+and+numbers
[/url]
定义一个action或者包的properties文件
在里面按照MessageFormat 定义你的date format 比如
format.date={0,date,yyyy-MM-dd HH:mm}

在jsp页面中用<ww:text>标签

<ww:text name="'format.date'" value0="yourdate" />
0 请登录后投票
   发表时间:2004-12-22  
^_^,太感谢了。三种解决办法都试过,都不错。选用了第一种方式。

但是反过来想一下,如果不是各位webwork前辈指点一下,真的会继续苦恼下去。走更多的弯路。webwork是不错的框架,但是啊,缺憾就是没有文档,我找了很多,都是十分浅易的。没有涉及到这些具体问题的。

如果哪位大哥有比较好的文档,不论中英文,能否共享一下?大家共同进步。谢谢
0 请登录后投票
   发表时间:2004-12-22  
ruby 这个方法真好,而且支持i18n
0 请登录后投票
   发表时间:2004-12-22  
呵呵,问个题外话:怎么长分?怎么有的人帖子发了不少,分数不高,有的人帖子不多,分数不少?
0 请登录后投票
   发表时间:2004-12-22  
那是个摆设,那个功能已经被中途取消了,所以就现在这样了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics