2017-03-31 9 views
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(); 
    } 
} 

汚いけど何が違いを作るように見えるように私はすでに即時にGridLayoutの設定だけでなく、全体のコンポーネントをマークしようとしました。

だから私はここで何か間違っていますか?そうでない場合、クライアントにコンポーネントの更新を強制することができる「良い」方法はありますか?

+0

[プッシュ](https://vaadin.com/docs7/-part7/framework/advanced/advanced-push.html)を使用していますか? – Morfic

+0

@モリックそれはおそらくうまくいくでしょう。 Vaadinはプッシュアドオンなしで機能するように設計されているので、私は別の方法がなければならないと思いますが。 – kalsowerus

答えて

0

@Morficによって提案されたとおり、私はServer-Pushアドオンを自動モードで有効にしました。そして、クライアントへの必要な更新はそのアドオンによって行われます。どのくらい私はそのソリューションが好きですが、それが動作するかわからない。

関連する問題