【问题标题】:Wait message for slow JSF page等待慢速 JSF 页面的消息
【发布时间】:2011-03-25 07:05:16
【问题描述】:

我有一个具有请求范围 bean 的 jsf 页面。在请求范围 bean 的构造函数中触发了慢速数据库查询。然后,查询的结果会显示在网页的一个jsf数据表中。

如何在数据库查询完成之前显示等待消息?

我尝试为标记的 onLoad 调用 javascript 函数。该方法仅在慢速 db 查询执行后调用。

【问题讨论】:

    标签: javascript database jsf datatable


    【解决方案1】:

    慢速数据库查询发生在服务器上,早在构建的页面到达浏览器之前。做您想做的事情的唯一方法是安排浏览器在您启动导致 JSF 页面运行的 HTTP 请求之前显示“等待”消息。

    然而,花时间在这方面的最佳方式可能是修复查询。

    【讨论】:

    • 这是一个我无法更改的巨大查询。好吧,我可以使用您的方法,但我想我将不得不使用会话范围的 bean。我错了吗?
    • 与 DBA 交谈。您应该真正考虑 DB 级别的分页。现在听起来很像您正在为每个最终用户将包含数千条记录的整个 DB 表复制到 Java 的内存中。当您的应用被大量使用/访问时,这可能迟早会炸毁您的应用。
    • BalusC,你是对的。数据库分页必须更有效。我正在浏览您的博客以获取示例。
    【解决方案2】:

    您必须先加载“等待页面”,然后在该页面的onLoad 中加载执行数据库查询的页面。如果查询速度很快,用户将不会看到太多闪烁,因为现代浏览器(= 除了 IE6 之外的任何东西)。

    或者,您可以在隐藏的iframe 中加载结果,并在页面中显示“请稍候”。当iframe 中的代码加载完毕后,您可以通过parent 访问父文档使其可见:

    parent.getElementById('frame').styles.display = '';
    parent.getElementById('wait').styles.display = 'none';
    

    (把这个放在iframe内的JSP的onLoad中)。

    【讨论】:

      猜你喜欢
      • 2022-12-15
      • 2019-03-30
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2012-06-05
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多