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