[size=medium]背景:
最近在做一个项目,项目中要求显示一个页面,这个页面中存在的复选框的项目都是从数据库中取得。也就是说复选框的内容是动态不固定的。项目组中实现的方法是使用<logic:iterate/>标签动态显示项目,上一次已经选中的内容使用js,也就是说当第一次选择完后,会将选择后的项目拼成一个用逗号分隔的字符串。当再次进入这个页面时,js去分割这个字符串,然后遍历所有的复选框,当有相等的项目时,将这个项目设定为选中。
我在测试时候发现这个方式没有问题,但是当数据量很大的时候,我进行了全选,再次进入这个页面时,发现页面不显示,一直在等待。等了大概5分钟后,页面显示完成。
分析原因:
由于使用字符串分割方式,导致当项目内容过多过长时,js处理时间过长。
当时情况是,项目内容为一个16位长的字符串,数据库中一共存在了一百万条数据。如果这些数据连接成字符串会超过1k。
解决方案:
参见http://www.ibm.com/developerworks/cn/java/j-sr3.html[/size]
最近在做一个项目,项目中要求显示一个页面,这个页面中存在的复选框的项目都是从数据库中取得。也就是说复选框的内容是动态不固定的。项目组中实现的方法是使用<logic:iterate/>标签动态显示项目,上一次已经选中的内容使用js,也就是说当第一次选择完后,会将选择后的项目拼成一个用逗号分隔的字符串。当再次进入这个页面时,js去分割这个字符串,然后遍历所有的复选框,当有相等的项目时,将这个项目设定为选中。
我在测试时候发现这个方式没有问题,但是当数据量很大的时候,我进行了全选,再次进入这个页面时,发现页面不显示,一直在等待。等了大概5分钟后,页面显示完成。
分析原因:
由于使用字符串分割方式,导致当项目内容过多过长时,js处理时间过长。
当时情况是,项目内容为一个16位长的字符串,数据库中一共存在了一百万条数据。如果这些数据连接成字符串会超过1k。
解决方案:
参见http://www.ibm.com/developerworks/cn/java/j-sr3.html[/size]