Vaadin。没有附加UI时该怎么办?

时间:2016-11-01 04:41:47

标签: java vaadin vaadin7

我有以下情况。在我的应用程序中,我使用Java的TimerTask定期更新一些控件值。 更新方法如下所示:

public void updateDates()
{
   if(!myUI.get().isAttached())
       return;

    myUI.get().access(() -> {
        isAsyncUpdate = true;
        resetUnmodified();
        isAsyncUpdate = false;
        myUI.get().push();
    });
}

好的,一旦用户登录,所有内容都在更新,没有任何问题。假设用户注销然后同一用户登录。之后isAttached()方法返回false。 我无法理解为什么会发生这种情况以及如何克服这个问题( 我该如何解决这个问题?

提前感谢您提供任何帮助

2 个答案:

答案 0 :(得分:0)

我似乎找到了问题的根源。我使用单个计时器对象来处理所有控件。现在我已经重构了类,使其每个控件都使用自己的计时器。它似乎解决了这个问题。但是对于我来说这个解决方案并不完美:单个计时器比许多人更好,而他们的工作实际上也是如此。但到目前为止,我不知道如何以另一种方式解决这个问题..

答案 1 :(得分:-1)

你应该使用静态方法UI.getCurrent(),然后将它强制转换为你自己的myUI,这样你就一定会得到当前使用过的用户界面。