Bonjour à tous !
J'aimerais afficher un tabPanel avec RichFaces 3.3.3 de manière dynamique. Pour cela, en cherchant sur le web j'ai vu qu'en employant un <c:forEach> on pouvait générer des <rich:tab> à partir d'un bean ...
C'est ce que j'ai fait dans ce code :
#{todoBean.contextList} retourne ici un objet de type List<Context>, Context étant une classe à moi ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:c="http://java.sun.com/jsp/jstl/core" template="/templates/module.xhtml"> <ui:define name="menu"> <ui:include src="/planner/menu.xhtml" /> </ui:define> <ui:define name="module"> <f:facet name="header"> Liste des choses à faire </f:facet> <!-- Début du module --> <rich:tabPanel id="ctx_panel" width="100%" switchType="ajax"> <c:forEach items="#{todoBean.contextList}" var="toolist" > <rich:tab name="#{toolist.name}"> <f:facet name="label"> <h:outputText value="#{toolist.name}" /> </f:facet> <!-- Début de l'onglet --> <!-- Fin de l'onglet --> </rich:tab> </c:forEach> </rich:tabPanel> <!-- Fin du module --> </ui:define> </ui:composition>
Les tab ne s'affichent pas malgré le fait que todoBean.contextList retourne 4 objets ... C'est bizarre !
Et si je remplace
xmlns:c="http://java.sun.com/jsp/jstl/core"
par
xmlns:c="http://java.sun.com/jstl/core"
alors là il m'affiche bien tous les onglets comme il faut.
Mais l'appelle à TodoBean.getContextList() se fait une vingtaine de fois !!! ce qui ralenti fortement l'affichage (j'ai des requetes Hibernate derrière) ...
Voila ... donc j'ai le choix entre n'afficher rien du tout ou bien tout afficher et attendre longtemps que la fonction itère n fois ...
Pour info j'ai :
- JBoss 5.0.1
- RichFaces 3.3.3
- JSF 1.2
- Taglibs 1.2
Auriez-vous une idée pour que les tabs s'affichent correctement, et que la fonction ne soit exécutée qu'une seule fois ???
Merci beaucoup !!!
PS : plus il y a de tabs à afficher et plus la fonction TodoBean.getContextList() est appelée ...
Partager