java - Vaadin 中当前 UI 的访问方法

标签 java multithreading vaadin

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

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

UI.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
        }
    }
}

已解释。附加 View 时存储 UI 引用。并编写一个方法来更新 View ,因为您需要在那里执行 ui.access() 。调用此方法进行更新,而不是在线程中执行 UI.getCurrent()。

这是常见问题,这里也有关于同一件事的更具体的案例问题 vaadin 10 - Push - Label won't update

关于java - Vaadin 中当前 UI 的访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553345/

相关文章:

java - 获取列中的总金额

java - 如果我使用单独的类,如何使用 DecimalFormat 格式化结果?

java - 使用java集合存储一个键但多个值?

java - 在 Android 中使用 WebView 实现 JavascriptInterface 的最佳实践?

layout - 占用 Vaadin Gridlayout 中的可用空间,但考虑换行

java - Vaadin getContent.addComponent() 和 addComponent() 之间的区别?

java - 调用已存储在 ArrayList 中的对象的方法

java - 下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 的表单

Android ADB Shell ~ 如何列出一个进程的线程?

multithreading - 如何避免不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程错误?