如果你使用Extjs框架进行Web应用程序的开发时,会遇到许多关于时间的问题。其中主要的问题可能出现在两个方面:
1、后台数据库中读取到日期格式的数据后,打包成JSON格式传到前台进行显示。
2、前台以格式化(如常见的yyyy-MM-dd HH:mm:ss)的日期组织成JSON格式,后台进行转换存储时。
下面就这两个重要的问题进行详细的解说。
在含有年月日 时分秒的转化时,
String x="[{'id':'1','fixOkdate':'2013-07-23 10:47:00','containerNumber':'1',
'evaluatePrice':33,'contractor':'','operator':'','containerType':'','containerLevel':''
,'loggingMan':'','loggingDate':'','fixGroup':'','qc':''}]";
JSONArray obj = JSONArray.fromObject(x);
List<Map> list = JSONArray.toList(obj, Map.class);
for (int i = 0; i < list.size(); i++) {
Map temp = list.get(i);
String id = temp.get("id").toString();
System.out.println(id);
}
x一定是一个数组,数组中包含有JSON格式的字符串才能正确取到ID值。
String param="{'id':'3','containerProperty':'3','boatName':'3','voyageNumber':'3',
'getContainerDate':null,'destinationPort':'3','ladingbillNumber':'3','containerType':'3',
'containerSize':'3'}";
YxFieldneedcn b=(YxFieldneedcn) MyTools.formJSONtoBean(param, YxFieldneedcn.class);
System.out.println(b);
对JSON格式的字符串中含有时间的字符串时,例如getContainerDate时,值为null或者为yyyy-MM-dd HH:mm:ss格式,否则在转化为Java对象的过程中将出错。不可以是空字符串。
Extjs学习。。。。
1、可以让函数自动执行、并且为函数传递参数
(function(name){
console.log(name);
}('wocao'))
2、
检测类型
Ext.onReady(function(){
var i,j,k,defaults;
var xx='222'||{};
var yy=222||{};
var zz=defaults||{};
console.log(typeof xx);// string
console.log(typeof yy);//number
console.log(typeof zz);//object
});
3、输出对象及复制对象
Ext.onReady(function(){
var i,j,k,defaults;
var obj={ a:'aaa',b:'bbb',c:'ccc' };
var xx=defaults||{};
// 循环输出对象的属性
for(i in obj){
console.log(obj[i]);
xx[i]=obj[i];
}
for(j in xx){
console.log(xx[j]);
}
});
或者在Extjs4中可以直接使用框架提供的函数来完成。
Ext.onReady(function(){
var i,j,k,defaults;
var obj={ a:'aaa',b:'bbb',c:'ccc' };
var xx=defaults||{};
// 循环输出对象的属性
for(i in obj){
Ext.apply(xx,obj);
}
for(j in xx){
console.log(xx[j]);
}
});
4、
var x=true
console.log(!x?'222':'333');
当!x值为true时打印输出 222,当为false时打印输出333
5、
console.log(Ext.isObject(null));
值为false,纠正了JavaScript的关于空值也为对象的Bug
6、使用Ext.iterate迭代对象
var x={x:'1',y:'2',z:function(){}};
Ext.iterate(x,function(record,value){
console.log(record);
console.log(value);
},null);
7、
(function() {
var x='2222';
pp.bb={
et:function(){
console.log('et');
}
}
})();
console.log(pp.bb);
当在一个函数加上()()时,表示立刻执行这个函数。这样就可以访问函数中定义的属性和方法了。在加方法时,需要在一个属性对象中才可以。
8、获取Store中的参数
var store=Ext.StoreManager.get('yx.Summary');
var f=store.filters.items;
console.log(f[1].value);
这样就不可以使用store.proxy.extraParams方式添加,而应该使用store.filter("key","value")
9
var obj={'x':'bb'}; Ext.ClassManager.setNamespace('MyCompany.pkg.Example',obj); alert(MyCompany.pkg.Example===obj);
结果为true
10、
Ext.define('Logger', { singleton: true, log: function(msg) { console.log(msg); } }); Logger.log('Hello');
11、
Ext.define('my',{ extend: 'Ext.panel.Panel', bb:'bb_value', cc:function(){ console.log('cc_function'); } }); Ext.define('my',{ override:'my', dd:'dd' }); var x=new my(); console.log(x.bb);
12、
在Extjs4的环境下可以这样进行循环
var xx=['dd','bb','cc'],t=xx.shift(); for ( ; t ;t = xx.shift()) { console.log(t); }
// shift()函数的作用是删除数组中的第一个元素并返回
如上的循环 当判断t为null、undefined时,JavaScript将这值当作false来处理,所以就会停止执行。
13、
var m=new cthd.model.xx.EvaluateBillFee({id:records[0].data.id});
这样可以获取一个新的Model实例
14、在Extjs4中如何保存一个上一次使用过的变量
Ext.onReady(function(){ if(Ext.BLANK_IMAGE_URL.substr(0,4)!="data"){ Ext.BLANK_IMAGE_URL="./loader/images/s.gif"; } //在此添加ExtJS代码 var els=Ext.select(".smallImg"); var bigImg=Ext.getDom("bigImg"); var index=0; var fn=function(v){ console.log(index); var ell=els; ell.item(index).removeCls("select"); index=index+v; if(index<0){ index=2; }else if(index>2){ index=0; }; var el=ell.item(index); el.radioCls("select"); var src=el.dom.src; bigImg.src= src.substr(0,src.length-6)+src.substr(src.length-5); }; Ext.create("Ext.util.KeyNav","div1",{ up:function(){ fn(-1); }, down:function(){ fn(1); }, scope:this }); });