当前位置: 代码迷 >> J2EE >> struts2 jsp->action 时间转换疏失
  详细解决方案

struts2 jsp->action 时间转换疏失

热度:11   发布时间:2016-04-21 21:01:08.0
struts2 jsp->action 时间转换出错
jsp中时间是: 2013/12/18 18:05:06
action中有个bean对象,其中有属性 creatTime, 类型是Date

当提交action时,就会报错,并且说日期设置出错

请问Bean对象中的日期类型应该用什么?
谢谢!

------解决方案--------------------
struts2的默认时间格式是yyyy-MM-dd HH:mm:ss你bean里面已经用了Date类型只是你的格式不对,这时你可以用struts2的类型转换器,自己写个专门针对时间的类型转换器

public class DateTypeConvertor extends StrutsTypeConverter{
//时间字符串转成Date(即是你页面传来的时间字符串)
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Date date=null;
if(values!=null&&values.length>0){
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
try {
df.parse(values[0]);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}

//将Date类型的数据转成时间字符串
@Override
public String convertToString(Map context, Object o) {
Date date=(Date)o;
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return df.format(date);
}

}

转换器写完后你可以指定到全局或局部.如果你整个项目的时间格式都是这样的可以指定到全局,我这里不清楚你是否整个项目都是这个格式使用局部转换器.
只要在这个Action相应的包上添加一个你Action类型-conversion.properties文件里面写上
#表示此action中orgCata属性的createTime属性使用DateTypeConvertor作转换
orgCata.createTime=DateTypeConvertor
------解决方案--------------------
要自动转换,肯定是要配置的。有个类叫DefaultTypeConverter,继承这个类。还要创建properties文件,里面设置为ava.util.Date = xxxxx
xxxxx是继承DefaultTypeConverter的子类,在里面设置的。
  相关解决方案