Comment utiliser AjaxLazyLoadPanel dans Wicket

Comment utiliser AjaxLazyLoadPanel dans Wicket

Définition AjaxLazyLoadPanel:

Un panneau où vous pouvez charger paresseusement un autre panneau. Cela peut être utilisé si vous avez un panneau / composant assez lourd en création et que vous voulez d'abord montrer à l'utilisateur la page et remplacer le panneau quand il est prêt.

Cette fonctionnalité est vraiment impressionnante. Ici, nous vous montrons comment convertir un panneau normal en ce puissantAjaxLazyLoadPanel.

Panneau d'origine

Panneau de portillon normal.


add(new PricePanel("price"));

Panneau de chargement paresseux

Convertir en WicketAjaxLazyLoadPanel.


add(new AjaxLazyLoadPanel("price")
{
  @Override
  public Component getLazyLoadComponent(String id)
  {
       return PricePanel(id);
  }
});

Terminé, le PricePanel a maintenant un effet de chargement paresseux. Nice

Il faut se méfier!

L'un des inconvénients de ceAjaxLazyLoadPanel est qu'il ne contient pas de version de secours. Si le JavaScript du navigateur est désactivé, l'image paresseuse continuera de se charger indéfiniment.

Voici une astuce qui joue avec.

1. Met le code suivant dans la classe d'application de Wicket

protected void init() {
        getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
}

2. Vérifie ça

WebClientInfo clientInfo = (WebClientInfo)WebRequestCycle.get().getClientInfo();
if(clientInfo.getProperties().isJavaEnabled()){
add(new AjaxLazyLoadPanel("price")
{
  @Override
  public Component getLazyLoadComponent(String id)
  {
       return PricePanel("price");
  }
});
}else{
  add(new PricePanel("price"));
}

La fonction ci-dessus exécutera la fonction AjaxLazyLoadPanel si le navigateur prend en charge JavaScript, sinon déléguez-le à la demande normale.