2012-03-29 13 views
1

我正在Vaadin中编写一个应用程序来搜索结果。表单用于指定条件,并使用表格来表示结果。 我也想显示在Vaadin的Window.Notification中找到的结果数量。 我的问题是,我想要通知留在那里,直到用户点击它,因此它几秒钟后不会消失。 如果你只是输入一个很大的延迟时间,那么如果你不点击这些通知并做几次搜索,所有的结果通知都会相互超越。因此,如果您点击它们将其删除,您会看到之前搜索结果的数量。 这是我想要避免的。关闭Vaadin窗口中的通知事件

通知已添加到窗口,并且据我所知,您无法获得对它们的引用来更新它们。所以如果已经有一个礼物,你不能改变当前的通知。它是画后,它是从com.vaadin.ui.Window

一个我一直在寻找的是Vaadin如何关闭通知你点击它之后,这样也许我可以做以前一样的东西LinkedList<Notification> notifications删除每次搜索都会删除先前的通知,新的搜索会添加新的通知。 但到目前为止,我无法找到它是如何完成的。

html中的通知以div显示。所以也许有一个JavaScript我可以打电话在Vaadin删除该div?

有谁知道计时器如何在定义的延迟后关闭通知?这会调用一个JavaScript,我也可以调用?

回答

1

如果通知延迟为-1,则必须由用户点击。除非该通知TYPE_ERROR_MESSAGE型的,你必须自己创建一个通知对象:

Notification message = new Notification("Message", Notification.TYPE_HUMANIZED_MESSAGE); 
message.setDelayMsec(-1); 
getWindow().showNotification(message); 

有一个在Vaadin没有机制来听通知的隐藏事件。您可以创建自己的小部件,从VNotification派生出来,将此条件传输回服务器。

+0

是的,但是如果您将延迟设置为-1,则无需执行其他操作即可关闭结果通知。我想要做的是显示结果和结果通知。用户可以使用结果并仍然能够看到总计结果。我知道Vaadin没有预见到这样做的机制,但Vaadin会在延迟秒数过去或点击通知后执行我想要触发的操作。我想知道这个动作是否可以直接调用。我会看看你对VNotification的建议 – gizmo753 2012-03-29 10:03:11

+0

@ gizmo753听起来像你必须开发自己的widget – 2012-03-29 13:24:44