Vaadin中当前UI的访问方法

M.D*_*Dan 1 java multithreading vaadin

我目前正在Vaadin的Java Web应用程序上工作.

我想从另一个类访问位于我的LoginUI中的getter方法.

UI.getCurrent()成功返回当前的Thread(LoginUI).

我需要调用哪些方法才能实现此目的?

先感谢您.

Tat*_*und 5

UI.getCurrent()不是线程安全的.相反,我建议您使用以下模式.

public class MyView extends VerticalLayout implements View {

    private UI ui;

    @Override
    public onAttach() {
        ui = getUI();
        ...
    }

...

    public updateMe(..) {
        ...
        try {
           ui.access( ... do updates ... );
        } catch (UIDetachedException e) {
           // Do nothing, this exception is thrown if Browser is closed
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解释.附加视图时存储UI引用.并编写一个方法来更新视图,你需要在那里做ui.access().调用此方法来执行更新,而不是在线程中执行UI.getCurrent().

这是经常被问到的话题,还有更多具体的案例问题,关于同样的事情也在这里vaadin 10 - 推 - 标签不会更新