我試圖提供能力上傳文件在我vaadin應用無法訪問UI元素中vaadin的FileUpload FinishListener
protected Upload questionImageUpload = new Upload("Upload question", questionReceiver);
questionImageUpload.addFinishedListener(new Upload.FinishedListener() {
@Override
public void uploadFinished(Upload.FinishedEvent event) {
boolean hasLock = VaadinSession.getCurrent().hasLock();
button.setEnabled(false);
}
});
但是,在我的FinishListener.uploadFinished()
,如果我修改了部分UI元素(在上面,我禁用了一個按鈕),修改沒有得到應用。
我認爲這個方法可能會在非UI線程中調用,所以我通過在上面的uploadFinished
中放置一個斷點來檢查VaadinSession
是否可用。但是,VaadinSession.getCurrent()
未返回空值。另外hasLock
也是如此。
可能是什麼原因?
我在Google App Engine上運行此vaadin應用程序(仍在IntelliJ IDEA本地運行)。這可能是背後的原因嗎?
你的代碼可能工作,但在我的情況下,如果我禁用SucceedListener或CompleteListener中的按鈕,按鈕不會被禁用。我發佈了這個問題尋求一個理由 –