Метод доступа из текущего интерфейса в Vaadin - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время я работаю над веб-приложением Java в Vaadin.

Я хочу получить доступ к методу получения, который находится в моем LoginUI, из другого класса.

UI.getCurrent() успешно возвращает текущий поток (LoginUI).

Какие методы мне нужно вызвать, чтобы добиться этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

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.access ().Вызовите этот метод, чтобы выполнить обновления, вместо этого выполните UI.getCurrent () в потоке.

Это часто задаваемая тема, здесь также есть более конкретный вопрос о том же самом vaadin 10 - Push- Метка не будет обновляться

...