Optimiser Displaytag

La librairie Displaytag propose une solution rapide pour construire un tableau en html.
Il suffit de lui donner en paramètre une liste d'objets présents dans un des scopes de l'application web.
En résultat on obtient un tableau html de notre liste d'objets avec une quantité d'options telles que les tris sur les colonnes, la pagination, ou encore l'export du tableau aux formats csv, excel, xml, pdf ou rtf.

Cependant par défaut la librairie a des problèmes de performance pour afficher une liste d'objets de taille importante.

Dans ce cas le temps de chargement de la page est très long pouvant provoquer une erreur OutOfMemory.

Je vous présente une solution pour éviter ce problème.

Le principe est d'utiliser la pagination et la notion de liste partielle présent dans la librairie.
Pour ce faire il faut ajouter deux nouvelles propriétés au tag table : partialList et size.

Pour commencer il est important d'avoir défini la propriété pagesize qui est le nombre d'élément affiché sur une page.
Ensuite il suffit de :

  • Activer les listes partielles il suffit d'ajouter partialList="true" sur le tag table.
  • Définir la taille totale de la liste avec la propriété size.

<display:table name="listBeans" pagesize="20" partialList="true" size="resultSize">
<display:column property="id" title="ID" />
<display:column property="name" title="Name" />
</display:table>

Dans l'exemple précédent, peu importe la taille de la liste listBeans, seul les 20 éléments devant être affichés sur la page sont chargés en mémoire. Ceci évite les problèmes de performance liés aux listes complètes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.