Java Vaadin中当前UI的访问方法

Java Vaadin中当前UI的访问方法,java,multithreading,vaadin,Java,Multithreading,Vaadin,我目前正在Vaadin开发一个Java Web应用程序 我想从另一个类访问位于LoginUI中的getter方法 getCurrent()成功返回当前线程(LoginUI) 我需要调用哪些方法来实现这一点 提前感谢。UI.getCurrent()不是线程安全的。相反,我建议您使用以下模式 public class MyView extends VerticalLayout implements View { private UI ui; @Override publi

我目前正在Vaadin开发一个Java Web应用程序

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

getCurrent()成功返回当前线程(LoginUI)

我需要调用哪些方法来实现这一点

提前感谢。

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
        }
    }
}
解释道。附加视图时存储UI引用。然后编写一个方法,根据需要在那里更新ui.access()视图。调用此方法来执行更新,而不是在线程中执行UI.getCurrent()

这是一个经常被问到的话题,这里也有关于同样事情的更具体的案例问题