日期:2014-05-16 浏览次数:20363 次
在用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"); } } ]);?
?