bonjour jean-francois,
d'un point de vue performance, une meilleure solution serait de creer un decorateur comme indique ici:
http://displaytag.sourceforge.net/11/tut_decorators.html

cela dit, display tag fonctionne de toute maniere (par design) avec une collection entiere. Il existe une possibilité de l'utiliser avec une liste partielle dans le cas d'un set de données trés important mais cela suppose de creer des adapteurs (entre le backend et displaytag) pour la pagination et le tri, mais cela risque de mener vite a une usine a gaz, sans pour autant garantir des performances si le code backend n'est pas optimal.

le principal interet de displaytag est quand meme sa rapidité et sa simplicite de mise en oeuvre en jsp tout en garantissant une bonne flexibilité de présentation, c'est pourquoi nous l'avons intégré en version 5, pour ce genre d'usages.

cordialement.
dominique pillot.

Le 18 août 06 à 14:27, Jean-Francois Fournier a écrit :

Bonjour Ertu,
Effectivement, j'avais un problème de librairie, les librairies dont dépend displaytag, n'étaient pas à jour.

Toi, comment utilise tu cette librairie, quand je fais ça :

JahiaContainerList testContainerList = jData.containers ().getContainerList("test");
testContainerList.setIsContainersLoaded(false);
Enumeration testContainers = testContainerList.getContainers();
request.setAttribute( "test", testContainers);

J'ai : Nothing found to display. Comme résultat.

La solution que j'ai trouvée, est de faire un objet avec des getter/ setter. De remplir un Arraylist avec des objets en parcourant mon containerList. Ensuite j'envoie le arraylist au display tag.

Comme ceci :

JahiaContainerList listeEmployeContainer = jData.containers ().getAbsoluteContainerList("listeEmployeRH", 205 );
  //si il y a au moins un programme dans la liste des programmes
  if(listeEmployeContainer != null)
  {
   Enumeration listeEmploye = listeEmployeContainer.getContainers();

    ArrayList employeRH = new ArrayList();
    while (listeEmploye.hasMoreElements())
    {
JahiaContainer employeContainer = (JahiaContainer) listeEmploye.nextElement();
         String nom = employeContainer.getFieldValue("prenom","");
         String prenom = employeContainer.getFieldValue("prenom","");
String titrePoste = employeContainer.getFieldValue ("titrePoste",""); String telephone = employeContainer.getFieldValue ("telephone",""); String telecopieur = employeContainer.getFieldValue ("telecopieur",""); String courriel = employeContainer.getFieldValue ("courriel",""); String pavillon = employeContainer.getFieldValue ("pavillon",""); String secteur = employeContainer.getFieldValue ("secteur","");
         String sujet = employeContainer.getFieldValue("sujet","");
String ressource = employeContainer.getFieldValue ("ressource","false"); employeRH.add(new EmployeRH(nom, prenom, titrePoste, telephone, telecopieur, courriel, pavillon, secteur, sujet, Boolean.getBoolean(ressource)));
    }
    request.setAttribute( "employeRH", employeRH );

  }


Mais cette solution n'est pas optimale car je dois parcourir tous les enregistrements. Dans mon cas, ce n'est tellement grave car je n'ai pas beaucoup d'enregistrement. Mais j'aimerais quand même savoir s'il y a une meilleure façon d'utiliser le displaytag avec le contenu d'un containerList.

Merci pour votre aide :)

Jeff

Répondre à