我有一个问题,Vaadin没有及时更新GridLayout的显示。 GridLayout是VerticalLayout中的一个组件,用于列出所有上传的文件。当我上传文件时,一切都在服务器端工作正常,但客户端没有看到更改,直到他向服务器创建新请求(通过上传另一个文件或触发其他一些事件/很少更新工作正常)。 / p>
以下是包含有问题的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();
}
}
我已经尝试将GridLayout设置为immediate,并将整个组件标记为脏,但似乎没有任何区别。
所以基本上我在这里做错了吗?或者如果没有,是否有一个很好的"我可以强迫客户更新其组件吗?