2012-03-29 73 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