我有一个名为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;
});
}
问题是,在我调用另一个事件之前 - 例如点击另一个按钮 - 它不会显示通知。
有什么问题?
答案 0 :(得分:3)
您需要将@Push
添加到UI子类,以使浏览器打开与服务器的双向连接。没有它,只有浏览器可以启动通信,只有当有一些新事件发送到服务器时才会这样做。