我是Vaadin的新手,可以使用一些幫助。等待子窗口輸入時暫停程序
場景: 我的webapp有一個叫做「import」的按鈕,當你點擊它時,你可以選擇一個文件來導入,然後打開一個顯示進度的新窗口。在導入過程中,程序會讀取文件的內容,並且在某些情況下,它需要來自用戶的其他信息才能繼續。在這種情況下,我想打開一個輔助窗口(用於輸入的簡單文本框和一個輸入按鈕),用戶可以在其中輸入缺失的信息。只有當用戶點擊輸入按鈕時,程序纔會繼續處理文件的導入。
我試過的東西: 我創建了一個擴展Window的類「ImportWindow」。 從這個類中,我調用名爲「FileReader」的類中稱爲「handleFileContent()」的方法,該類讀取文件的內容。 我用擴展Window創建了一個額外的類「AdditionalInfoPopUp」。 當「handleFileContent()」到達其中它需要更多的信息的文件的一部分,我有以下代碼:
AdditionalInfoPopUp apwindow = new AdditionalInfoPopUp();
UI.getCurrent().addWindow(apwindow);
while (!apwindow.isCompleted()){
// wait for user input
try {
Thread.sleep(5000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
「isCompleted()」是一個返回布爾值的方法,該餘當新的AdditionalInfoPopUp中的輸入按鈕被點擊時,設置爲true。
問題: AdditionalInfoPopUp從不打開。如果我刪除了while循環,那麼當程序讀取文件的其餘部分時它會打開。但是我需要立即開放,所以我可以在繼續之前獲得輔助信息。
我試過尋找幫助,但我一直未能找到任何東西。所以我希望這裏有人能幫忙。
您需要先讀取所有的uploadfile。然後,您可以添加您的邏輯來向用戶詢問更多信息。如果處理是在後臺線程中完成的,請閱讀 - > https://vaadin.com/wiki/-/wiki/Main/Using+server+initiated+events –
謝謝,它使我走上了正確的軌道。我已經在buttonclicklistener中實現了它,但是我需要啓動一個新線程,因爲在buttonclicklistener完成之前窗口沒有刷新。 現在有效。 – TSH
@AndréSchild你可以發表回答? –