作者归档:Waiting_Leo

关于Ext JS重写(override)和加载的问题

这里说明的是用Sencha CMD生成的项目。

要修复Ext中的Bug和添加自己的功能,用Ext.define来定义有重写类。

 

override配置项指定要重写的类,其他项目为要重写的具体内容。
如果你不想因为重写一个方法而导致原来的方法失效,你可以用this.callParent();来调用父类的同名方法。

重写的具体内容不多写,网上资料很多,这里说一下重写的类文件加载问题。

在定义一个类时,我们可以用requires或者uses来引用要调用的Ext类,但是重写的类在哪里加载容易维护?如果我们在随便一个类的定义里用requires来引用,那维护时会很不方便。
自己搜索了很久,没找到说明了在哪里加载,一开始我是在app.json里配置,后来发现项目里有个overrides文件夹,把重写的文件放到里面,然后用Sencha CMD运行sencha app refresh后,这个文件夹里的JS文件会被自动加载。

这个链接里也提到重写的问题:http://extjs.org.cn/node/721

 

Struts2 生成 JSON的日期转化成JS Date对象时间不一致的问题

我们前端用到Ext JS,在用Ext.Date.format(date, fomat)格式化日期的时候时间出现了不一致的问题,一开始以为是JS出现的问题。后来看了一下后端生成的JSON日期,格式类似:2014-10-11T17:02:45,日期和时间之前有个T,这是UTC时间,为世界标准时间,与GMT时间一样。

这个时间转成JS的Date对象时,如new Date(“2014-10-11T17:02:45″),时间会变成12号 的1点02分45秒,可见,相差了8个小时,而中国的时间是+0800,刚好就差这8个小时。

不知道为什么Strut2转成JSON会这样,丢失了时区,如果时间格式为:2014-10-11T17:02:45+0800是没问题的,包含了时区信息。

为了让JS正常工作,我们在Java的PO的Date类型的get方法中用注解 @JSON(format=”yyyy-MM-dd HH:mm:ss”) 格式化一下时间格式即可。我们在前端获取的时间格式变成了:2015-01-02 13:26:53,转成Date对象时间正确。

Struts2中图片设置缓存

在Struts2中,如果图片用InputStream 字节输入流进行读取图片,浏览器加载页面时每次都会重新加载图片,这样不但加重了服务器负担,还增加了带宽流量,并且图片本来是比较大的资源,会大大增加带宽资费。
所以为了开源节流,为Struts2中图片设置浏览器缓存是必须的。

继续阅读