Vaadin - 从窗口获取当前显示的通知

时间:2012-08-21 13:57:16

标签: java vaadin

是否有可能以某种方式从Vaadin的给定窗口中获取当前显示的NotificationLooking at the Window API,我只能看到几种showWindow()方法。

那么,是否有人知道是否存在某些功能可以获取当前显示的Notification(如果存在任何通知,那么)?

2 个答案:

答案 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;
}