Vaadin GridLayout 没有正确更新

Vaadin GridLayout not updating correctly

我有一个问题,Vaadin 没有及时更新 GridLayout 的显示。 GridLayout 是 VerticalLayout 中的一个组件,我用它来列出所有上传的文件。当我上传文件时,服务器端一切正常,但客户端在他向服务器创建新请求之前看不到更改(通过上传另一个文件或触发其他事件/虽然很少更新工作正常)。

这是包含有问题的 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 设置为即时以及将整个组件标记为脏,但似乎没有什么不同。

所以基本上我在这里做错了什么?或者,如果没有,是否有 "nice" 方法可以强制客户端更新其组件?

根据@Morfic 的建议,我在自动模式下启用了 Server-Push 插件,现在客户端所需的更新由该插件进行。不确定我有多喜欢这个解决方案,但它确实有效。