показать уведомление после успешного завершения в будущем - PullRequest
0 голосов
/ 04 июня 2018

У меня есть метод с именем showNotification, который показывает уведомление

public static void showNotification(UI ui, String notificationMessage) {
        Notification notification = new Notification(notificationMessage);
        notification.setStyleName("custom-notification");
        notification.show(ui.getPage());
}

И у меня есть служба, которая возвращает CompletableFuture.В моем контроллере я создал метод

@Override
public CompletableFuture<?> startProcessing() {
    return processorService.start();
}

И при нажатии кнопки я хочу показать уведомление, если start был успешным.Мое buttonClick событие выглядит следующим образом

event -> {
    controller.startProcessing()
        .thenAccept(aVoid -> UI.getCurrent().access(() -> {
                showNotification(getUI(), "Started processing");
            })
        ).handle((aVoid, throwable) -> {
               showNotification(getUI(), "Failed to start processing");
            return aVoid;
        });
}

Проблема заключается в том, что до тех пор, пока я не вызову другое событие - например, нажмите на другую кнопку - оно не будет отображать уведомление.

Что такоепроблема?

1 Ответ

0 голосов
/ 04 июня 2018

Вам необходимо добавить @Push к вашему подклассу пользовательского интерфейса, чтобы браузер открыл двунаправленное соединение с сервером.Без этого только браузер может инициировать связь, и он делает это только при появлении какого-либо нового события для отправки на сервер.

...