是否有可能以某种方式从Vaadin的给定窗口中获取当前显示的Notification? Looking at the Window API,我只能看到几种showWindow()
方法。
那么,是否有人知道是否存在某些功能可以获取当前显示的Notification(如果存在任何通知,那么)?
答案 0 :(得分:3)
我不相信目前有任何方法可以做到这一点。
您可以覆盖Window#showNotification(Notification)以自行跟踪,但据我所知,客户端不告诉服务器通知已关闭=>没有办法“重置”这个标志。
(私有方法Window#addNotification跟踪要在链接列表中发送到浏览器的通知,但Window#paintContent(PaintTarget)会在发送到浏览器后立即清除该列表)
答案 1 :(得分:1)
通过反思:
private boolean isNotified(String notif) throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Page current = Page.getCurrent();
Field f = current.getClass().getDeclaredField("notifications");
f.setAccessible(true);
List<Notification> notifications = (List<Notification>) f.get(current);
boolean found = false;
if (notifications != null) {
for (Notification notification : notifications) {
if (notification.getCaption() == notif) {
found=true;
}
}
}
return found;
}