2017-05-05 25 views
0

私のウィケットアプリケーションでは、データテーブルがあります。データプロバイダが接続され、REST-Serviceからコンテンツをロードします。この呼び出しには多くの時間が必要です(〜20秒)。Wicket - ページがレンダリングされた後にテーブルにデータをロード

したがって、空のテーブルでページをロードし、サービスからのデータでレンダリングした後にページを埋め込む方法はありますか?

私は、ページがレンダリングされた後、データプロバイダを再接続または再ロードについて考えた:

onAfterRender() 
しかし、私はまだデータプロバイダでそれを行う方法がわかりません。

答えて

3

AjaxLazyLoadPanelを見ると、コンポーネントが読み込まれている間に小さな読み込みアイコンがプレースホルダーとして表示されます。

add(new AjaxLazyLoadPanel("table") { 

    @Override 
    public Component getLazyLoadComponent(String markupId) { 
     return new MyLongLoadingTable(markupId); 
    } 
}); 

別の解決策:空のテーブルを表示し、定期的にすべてのデータ収集が行われているときに、テーブルを完了し、更新するために、データベース操作のために確認してください。 AbstractAjaxTimerBehaviorは良いユーティリティです。このように:

add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) { 

    @Override 
    protected void onTimer(AjaxRequestTarget target) { 

     if (isDataLoaded()) { 
      stop(target); 
      target.add(table); 
     } 

    } 

}); 
+0

最初に使用しました。完璧。ありがとう! –

関連する問題