日期:2014-05-16 浏览次数:20453 次
在用ExtJS + struts2-json开发过程上发现日期格式与组件接受的格式不一致,不显示结果或是乱了。
?
现象:
????? 因为struts2-json转换java.util.Date类的结果格式为:2010-10-25T23:12:10
? 我们一般在ExtJS端会使用renderer:Ext.util.Format.dateRenderer 来完成格式转换,
?但是问题来了,这样的方法在FF下,是生效的,但不知道怎么了在IE下,就无效了。
?经查原代码,出现在IE下是 v = new Date(Date.parse(v)); 中的Date.parse 出现了问题,在IE中识别不了2010-10-25T23:12:10 格式的日期,需要转换为2010/10/25 23:12:10 形式的格式。
?
我只就用renderer自己写方法来完成,如下:
{header:"生日",width:80,dataIndex:"birthday",format:"Y-m-d",sortable:true,align:"center"
,renderer:function(v){
if(!v){
return "";
}
//alert(v);
v = v.replace(new RegExp("-","gm"), "/").replace("T"," ");
//alert(v);
if(!Ext.isDate(v)){
v = new Date(Date.parse(v));
}
//alert(v);
return v.dateFormat("Y-m-d");
}
},
?
后来发现datefield组件也是一样的,如果不处理datefield不接受数据。也是自己写了。不过这是Record中 写了。:
?
注意这次里是使用convert
?
new Ext.data.JsonReader({
root:"user"
},[
{name:"user.id",type:"int",mapping:"id"},
{name:"user.name",type:"string",mapping:"name"},
{name:"user.birthday",type:"string",dateFormat:"Y-m-d G:i:s",mapping:"birthday",
convert : function(v,rec){
if(!v){
return "";
}
v = v.replace(new RegExp("-","gm"), "/").replace("T"," ");
if(!Ext.isDate(v)){
v = new Date(Date.parse(v));
}
return v.dateFormat("Y-m-d");
}
}
]);
?
?