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();
}
}
汚いけど何が違いを作るように見えるように私はすでに即時にGridLayoutの設定だけでなく、全体のコンポーネントをマークしようとしました。
だから私はここで何か間違っていますか?そうでない場合、クライアントにコンポーネントの更新を強制することができる「良い」方法はありますか?
[プッシュ](https://vaadin.com/docs7/-part7/framework/advanced/advanced-push.html)を使用していますか? – Morfic
@モリックそれはおそらくうまくいくでしょう。 Vaadinはプッシュアドオンなしで機能するように設計されているので、私は別の方法がなければならないと思いますが。 – kalsowerus