论坛首页 Java版 Struts

关于struts2对时间类型数据回填的问题

浏览 241 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-05-09
在form添加一个时间类型的字段:

 <s:textfield name="basicCar.timeBuy" cssClass="input1" size="80" maxlength="150"/>



当输入 :2008-01-01后。成功提交。

当修改这条记录时 :

这个 输入框 回填成 :08-1-1 0:00:00.000


我希望回填成 输入时候的样子 就是 : 2008-01-01

不知道如何实现?
  • C5cc715e-dc39-3482-a742-8b65ddf864b8-thumb
  • 描述:
  • 大小: 3.1 KB
  • 查看次数: 0
  • 477a992c-e90e-382a-9818-b8ccd309c255-thumb
  • 描述:
  • 大小: 3 KB
  • 查看次数: 1
   
时间:2008-05-09
写一个global converter专门针对java.utils.date具体做法如下
1.在src目录下创建xwork-conversion.properties加入如下配置
java.util.Date = com.fjimt.common.utils.DateTypeConverter
2.创建转化类DateTypeConverter该类继承StrutsTypeConverter实现
java.util.Date的双向转化,代码如下
public class DateTypeConverter extends StrutsTypeConverter {
	private static final Logger log = Logger.getLogger(DateTypeConverter.class);
	public static final String DEFAULT_DATE_FORMAT = "dd/MM/yyyy";

	// 暂时只考虑这几种日期格式
	public static final DateFormat[] ACCEPT_DATE_FORMATS = {
			new SimpleDateFormat(DEFAULT_DATE_FORMAT),
			new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy/MM/dd") };

	/**
	 * 
	 */
	public DateTypeConverter() {
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.struts2.util.StrutsTypeConverterconvertFromString(java.util.Map,
	 *      java.lang.String[], java.lang.Class)
	 */
	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		if (values[0] == null || values[0].trim().equals(""))
			return null;
		for (DateFormat format : ACCEPT_DATE_FORMATS) {
			try {
				return format.parse(values[0]);
			} catch (ParseException e) {
				continue;
			} catch (RuntimeException e) {
				continue;
			}
		}
		log.debug("can not format date string:" + values[0]);
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.struts2.util.StrutsTypeConverterconvertToString(java.util.Map,
	 *      java.lang.Object)
	 */
	@Override
	public String convertToString(Map context, Object o) {
		if (o instanceof Date) {
			SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
			try {
				return format.format((Date) o);
			} catch (RuntimeException e) {
				return "";
			}
		}
		return "";
	}
}
   
0 请登录后投票
时间:2008-05-09
我刚查了资料,也在考虑用转换器。 碰到个奇怪的问题 。我 xwork-conversion.properties放到了\web\WEB-INF\classes下里面 :


java.Util.Date=base.ssh.action.converter.DateConverter



DateConverter.java

package base.ssh.action.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.util.StrutsTypeConverter;

/**
 * Date: 2008-5-10 9:12:06
 * <p/>
 * 说明 :
 */
public class DateConverter extends StrutsTypeConverter {
    private static final Log _log = LogFactory.getLog(DateConverter.class);

    /**
     * 字符串转成时间
     * @param context
     * @param values
     * @param toClass
     * @return Object
     */
    public Object convertFromString(Map context, String[] values, Class toClass) {
        if (values.length > 0 && values[0] != null && values[0].trim().length() > 0) {
            SimpleDateFormat sdf = new SimpleDateFormat();
            try {
                return sdf.parse(values[0]);
            }
            catch(ParseException e) {
                _log.error("error converting value ["+values[0]+"] to Date ", e);
            }
        }
        return null;
    }

    /**
     * 转成 字符串
     * @param context
     * @param o
     * @return  String
     */
    public String convertToString(Map context, Object o) {
          if (o instanceof Date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format((Date) o);
        }
        return "";
    }
}




编译后运行,居然报 :
___ ... initialized Struts-Spring integration successfully
___ Conversion registration error
java.lang.ClassNotFoundException: base.ssh.action.converter.DateConverter

        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1358)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1204)


我确信 base.ssh.action.converter.DateConverter 这个文件 就在
web\WEB-INF\classes\base\ssh\action\converter 下面

很奇怪
   
0 请登录后投票
时间:2008-05-09
都这样了还不行,真的没法子了.
对了你没有从elipse中启动tomcat么.
   
0 请登录后投票
时间:2008-05-09
myoldman 写道
都这样了还不行,真的没法子了.
对了你没有从elipse中启动tomcat么.



不是。我是直接 启动tomcat 然后用虚拟目录 :
<Context crossContext="true" displayName="oa1.0.0" docBase="G:\project_mine\oa1.0\web" path="" >



位置指定没错.都做一个月了.就是这个目录
   
0 请登录后投票
时间:2008-05-09
嗯,这个也是一种启动方法,以前用过,不过现在eclipse可以自动pulish就懒得再这么改了.
还是classNotFound么?有没有重新编译一下试试?
   
0 请登录后投票
时间:2008-05-09
myoldman 写道
嗯,这个也是一种启动方法,以前用过,不过现在eclipse可以自动pulish就懒得再这么改了.
还是classNotFound么?有没有重新编译一下试试?



试了。 还那样报错。
   
0 请登录后投票
时间:2008-05-10
在属性中加上,theme="simple" 再拭拭吧.
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐
    快速回复 引用上一条消息 (Alt+S)