2017-05-05 3 views
0

In meiner Wicket-Anwendung habe ich eine Datentabelle. Ein Datenprovider ist daran angeschlossen und lädt den Inhalt von einem REST-Service. Dieser Anruf benötigt viel Zeit (~ 20 Sekunden).Wicket - Laden von Daten in die Tabelle, nachdem die Seite gerendert wurde

Gibt es also eine Möglichkeit, die Seite mit einer leeren Tabelle zu laden und sie nach dem Rendern mit Daten aus dem Service wieder aufzufüllen?

Ich dachte über reattaching oder Neuladen der Datenprovider, nachdem die Seite gerendert wird:

onAfterRender() 

Aber ich weiß noch nicht, wie mit einem Dataprovider zu tun.

Antwort

3

Sie könnten einen Blick auf die AjaxLazyLoadPanel werfen, die ein kleines Ladesymbol als Platzhalter zeigt, während die Komponente geladen ist.

add(new AjaxLazyLoadPanel("table") { 

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

Eine andere Lösung: zeigen die leere Tabelle und prüfen Sie regelmäßig für die Datenbankoperation, die Tabelle zu vervollständigen und zu aktualisieren, wenn alle Datenerfassung durchgeführt wurde. Die AbstractAjaxTimerBehavior ist ein gutes Dienstprogramm. Gefällt mir:

add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) { 

    @Override 
    protected void onTimer(AjaxRequestTarget target) { 

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

    } 

}); 
+0

Verwendet die erste. Perfekt. Vielen Dank! –

Verwandte Themen