日期:2014-05-16  浏览次数:20477 次

Ext-JS Grid中诡异的时间问题
问题描述:
项目中需要用到Ext-JS带过滤功能的Grid插件,即Grid filter.程序要输出两列数据,时间(date)和值(value),数据量不大,大概有1000多条,数据是通过一个jsp将一个文本文件(.txt)解析成json格式的文件.一切准备好后刷新该页面,问题出现了,在日期这一列偶尔会有奇怪的时间出现,比如1970,1921,这是在数据文件中不可能存在的日期.而且每次刷新后,数据还不一样,有时候数据是完全正确的,有时侯多了N条诡异的数据.

问题分析:
发现这个问题后,我首先怀疑解析数据的那个jsp,因为他是整个程序的数据源.但是在一番调试后发现,根本不是这个jsp的问题,因为这个jsp在给定的参数条件下,生成的数据是永远不变的.

jsp的嫌疑解除了,我开始怀疑这个插件本身的原因.是不是首次加载的数据过多,导致这个插件出问题了.但是这个推测也被推翻了, 因为我试着将数据减少到20条以内还是不行,那就不是数据量的问题了.

然后我仔细对比了一下表格显示的数据和jsp产生的数据,发现那些诡异的时间对应的值在jsp数据文件中是存在的,而通过这个值在jsp产生的数据里是可以找到相应的日期的,然后在表格中查找这个日期,发现这个日期没有了,被那个诡异的日期替代了.虽然发现了这个问题,但是形式依然很不明朗.继续头疼中.

最后我打算在Grid的配置文件中找一找看有没有收获.配置文件是为了让Grid如何显示的,在review一行行代码的时候,我发现一个问题就是,我的日期这一列配置的时候,id设置的是”date”,而它的类型(type)也设置成”date”了,会不会这里有问题呢?

解决方案:
虽然说我不能肯定这个”date”值设置的是否有问题.但是根据我的经验,这里值得研究一下.于是我把与”date”相关的值都改掉了,最后试了一下.发现诡异的时间消失了,我又接着测了10几次,都没有出现之前的现象,貌似这个问题就被我碰巧解决了.

最后我想说的是,改bug也要不抛弃不放弃,抓住一个机会就要去尝试一下,看似很难的一个问题往往在不经意间解决了.希望我的经验对你有用.

原文来自JSSAY'S BLOG