2017-05-05 1 views
0

Dans mon application de portillon, j'ai une date. Un fournisseur de données est attaché à lui et charge le contenu d'un service REST. Cet appel nécessite beaucoup de temps (~ 20 secondes).Wicket - chargement des données dans une table après la page

Alors, existe-t-il un moyen de charger la page avec une table vide, puis de la recharger après avoir été rendue avec les données du Service?

Je pensais à refixer ou recharger la dataprovider après la page est rendue:

onAfterRender() 

Mais je ne sais toujours pas comment faire avec un fournisseur de données.

Répondre

3

Vous pouvez jeter un coup d'œil au AjaxLazyLoadPanel qui montre une petite icône de chargement comme espace réservé lorsque le composant est chargé.

add(new AjaxLazyLoadPanel("table") { 

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

Une autre solution: montrer la table vide et vérifier périodiquement pour l'opération de base de données pour compléter et mettre à jour la table lorsque toutes la collecte de données a été fait. Le AbstractAjaxTimerBehavior est un bon utilitaire. Comme ceci:

add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) { 

    @Override 
    protected void onTimer(AjaxRequestTarget target) { 

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

    } 

}); 
+0

Utilisé le premier. Parfait. Merci! –