【发布时间】:2011-03-25 07:05:16
【问题描述】:
我有一个具有请求范围 bean 的 jsf 页面。在请求范围 bean 的构造函数中触发了慢速数据库查询。然后,查询的结果会显示在网页的一个jsf数据表中。
如何在数据库查询完成之前显示等待消息?
我尝试为标记的 onLoad 调用 javascript 函数。该方法仅在慢速 db 查询执行后调用。
【问题讨论】:
标签: javascript database jsf datatable
我有一个具有请求范围 bean 的 jsf 页面。在请求范围 bean 的构造函数中触发了慢速数据库查询。然后,查询的结果会显示在网页的一个jsf数据表中。
如何在数据库查询完成之前显示等待消息?
我尝试为标记的 onLoad 调用 javascript 函数。该方法仅在慢速 db 查询执行后调用。
【问题讨论】:
标签: javascript database jsf datatable
慢速数据库查询发生在服务器上,早在构建的页面到达浏览器之前。做您想做的事情的唯一方法是安排浏览器在您启动导致 JSF 页面运行的 HTTP 请求之前显示“等待”消息。
然而,花时间在这方面的最佳方式可能是修复查询。
【讨论】:
您必须先加载“等待页面”,然后在该页面的onLoad 中加载执行数据库查询的页面。如果查询速度很快,用户将不会看到太多闪烁,因为现代浏览器(= 除了 IE6 之外的任何东西)。
或者,您可以在隐藏的iframe 中加载结果,并在页面中显示“请稍候”。当iframe 中的代码加载完毕后,您可以通过parent 访问父文档使其可见:
parent.getElementById('frame').styles.display = '';
parent.getElementById('wait').styles.display = 'none';
(把这个放在iframe内的JSP的onLoad中)。
【讨论】: