有关sturts2做的项目,放在linux出现致命的问题Date转换致死

  最近在工作中做一个管理系统,在本地的时候自己测试,没有任何问题,然后放在公司服务器开始测试,

测试的一开始就出现了问题,通过date类型的条件查询数据的时候,接收请求的action直接down掉,

并且直接跳转到了input对应的界面,这种问题之致命的,因为一旦这样,所有该action的请求功能全部down

掉,简单的说,整个系统部分功能完全崩溃,一开始没找到病症,死活解决不了,后来在不懈的努力之下,

终于找到了问题所在,是因为linux环境是英文的,不能识别yyyy-MM-dd这种日期格式,说实话,struts2

这个地方做的太粗糙了,java作为跨平台的语言,这点居然给忽视了,后来自己在网上找到解决方法,

package cn.edu.bigc.common.sys;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

/**
 * 自定义Date转换类,为实现linux引文时间转换
 * 
 * @author jixiangxiang
 * 
 */
public class DateConverter extends DefaultTypeConverter {
	private static final DateFormat[] ACCEPT_DATE_FORMATS = {
			new SimpleDateFormat("dd/MM/yyyy"),
			new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
			new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy/MM/dd") }; // 支持转换的日期格式

	@SuppressWarnings("unchecked")
	@Override
	public Object convertValue(Map context, Object value, Class toType) {
		// TODO Auto-generated method stub
		if (toType == Date.class) { // 浏览器向服务器提交时,进行String to Date的转换
			// Date date = null;
			String dateString = null;
			String[] params = (String[]) value;
			dateString = params[0]; // 获取日期的字符串
			for (DateFormat format : ACCEPT_DATE_FORMATS) {
				try {
					return format.parse(dateString); // 遍历日期支持格式,进行转换
				} catch (Exception e) {
					continue;
				}
			}
			return null;
		} else if (toType == String.class) { // 服务器向浏览器输出时,进行Date to String的类型转换
			Date date = (Date) value;
			return new SimpleDateFormat("yyyy-MM-dd").format(date); // 输出的格式是yyyy-MM-dd
		}
		return null;
	}
}

  在这里面

private static final DateFormat[] ACCEPT_DATE_FORMATS = {
			new SimpleDateFormat("dd/MM/yyyy"),
			new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
			new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy/MM/dd") }; // 支持转换的日期格式
提供你所使用的日期格式,我的不一定适合你,关键看你使用的是什么样的格式,写好这个类以后然后遵循struts2的配置
xwork-conversion.properties放在src根目录,java.util.Date=cn.edu.bigc.common.sys.DateConverter也对应着
写上。
posted @ 2013-04-16 11:45  季相相  阅读(571)  评论(1编辑  收藏  举报