0
我有一個問題,Vaadin沒有及時更新GridLayout的顯示。 GridLayout是VerticalLayout中的一個組件,用於列出所有上傳的文件。當我上傳一個文件時,在服務器端一切正常,但客戶端直到他向服務器創建一個新請求(通過上傳另一個文件或觸發其他事件/很少更新能正常工作)纔看到更改。Vaadin GridLayout沒有正確更新
這裏是包含有問題GridLayout的組件:
public class ListedMultiFileUpload extends VerticalLayout {
private MultiFileUpload multiFileUpload;
private GridLayout fileList;
public ListedMultiFileUpload(UploadFinishedHandler uploadFinishedHandler, UploadStateWindow uploadStateWindow) {
multiFileUpload = new MultiFileUpload(uploadFinishedHandler, uploadStateWindow);
fileList = new GridLayout(2, 5);
fileList.setImmediate(true);
addComponents(multiFileUpload, fileList);
}
public SmartMultiUpload getSmartUpload() {
return multiFileUpload.getSmartUpload();
}
public void addFile(String fileName, final Runnable fileRemover) {
final Label label = new Label(fileName);
final Button button = new Button("X");
button.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
fileList.removeComponent(label);
fileList.removeComponent(button);
fileRemover.run();
}
});
fileList.addComponent(label);
fileList.addComponent(button);
markAsDirtyRecursive();
}
}
我已經嘗試過的網格佈局設置爲近期和標記在整個組件爲髒,但似乎沒有有所作爲。
所以基本上我在這裏做錯了什麼?或者,如果沒有,是否有一種「很好」的方式可以強制客戶更新其組件?
你使用[push](https://vaadin.com/docs7/-/part7/framework/advanced/advanced-push.html)嗎? – Morfic
@Morfic這可能會正常工作。儘管我認爲必須有另一種方式,因爲Vaadin的設計是在沒有推入插件的情況下運行的。 – kalsowerus