【问题标题】:Vaadin 7 don't refresh UI after execution background thread (only if it takes more than 5 minutes)Vaadin 7 在执行后台线程后不刷新 UI(仅当它需要超过 5 分钟时)
【发布时间】:2013-04-30 13:44:28
【问题描述】:

我正在使用 Vaadin 7。在我的应用程序中有一个表格列表,用户可以选择一个或多个项目来详细说明。如果单击执行按钮,UI 组件将被禁用并启动两个线程: 第一个线程进行大量计算 UI 上的第二个线程更新进度指示器(使用 lock() 和 unlock() 方法)

在第一个线程结束时:

从数据库中删除项目,删除所有组件并重新添加(启用)。这样可以保证刷新表数据。

它工作得很好,但是当处理一个长任务时,UI 没有刷新并且表格还被禁用。

有人可以帮助我吗?

非常感谢

【问题讨论】:

    标签: java multithreading vaadin


    【解决方案1】:

    https://vaadin.com/forum#!/thread/231272

    简而言之 - 在 Vaadin 6.0 和 7.0 中,您不能从非请求线程将更改从服务器“推送”到浏览器。 (v6 有插件,v7.0 没有)

    在 Vaadin 7.1(尚未发布)中,这是可能的。详情请见https://vaadin.com/wiki/-/wiki/Main/Enabling+server+push

    【讨论】:

    • 感谢您的回答。我真的不明白为什么只有在线程花费超过 5 分钟时才会发生这种情况。
    • @user2312187 抱歉,我没有看到进度指示器注释;使用进度指示器意味着客户端将被更新。我想 5 分钟与 Vaadin 7 Heartbeat (vaadin.com/book/vaadin7/-/page/…) 有关 - 但除此之外,我不确定。
    • 你能解释一下 heartbeatInterval 的工作原理吗?我在web.xml中设置,例如:heartbeatInterval3600 然后呢?我刚刚尝试过这个配置:所有组件都被禁用,而只有表格保持禁用状态。
    • 恐怕我做不到:我对 Vaadin 7 还很陌生。我建议您将您的问题提交给 Vaadin 论坛vaadin.com/forum,那里有更多知识渊博的人可以提供帮助.
    • 我试了一个星期,但我无法发帖,因为 vaadin 论坛网站回复:DB 似乎有问题...
    【解决方案2】:

    您可以使用像 ProgressIndicator 这样定期刷新的组件。线程完成后禁用它。这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2015-02-16
      • 2012-10-18
      相关资源
      最近更新 更多