我目前正在 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/