Bonjour,

Je suis débutant dans le développement web et je m'intéresse à JSF et richfaces.

J'aimerai faire un rich:panel comme ci-dessous....

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
<rich:tabPanel>
 
       <rich:tab label="tab 1">
		<ui:include src="panelInsideTab.xhtml">
			<param name="param1" value="hello"/>
		</ui:include>
	</rich:tab>
 
	<rich:tab label="tab 2">
		<ui:include src="panelInsideTab.xhtml">
			<param name="param2" value="goodbye"/>
		</ui:include>
	</rich:tab>
 
</rich:tabPanel>
...néanmoins les onglets doivent être ajoutés dynamiquement d'après les données contenues dans un backing-bean.
J'ai essayé de boucler à l'aide du tag <ui:repeat>, malheureusement j'obtiens l'erreur suivante : "tab panel has no enabled or rendered tabs!"
Apparemment il n'apprécie pas trop que le tag <ui:repeat> se mette entre le tabPanel et les tabs.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<rich:tabPanel>
       <ui:repeat value="#{tabBean.list}" var="tab">
	       <rich:tab label="#{tab.name}">
		       <ui:include src="panelInsideTab.xhtml">
			       <param name="param1" value="#{tab.message}"/>
			</ui:include>
		</rich:tab>		
	</ui:repeat>
</rich:tabPanel>
J'ai ensuite essayé de déléguer la construction du tabPanel dans une classe Java...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<rich:tabPanel binding="#{tabBean.tabPanel}"/>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public HtmlTabPanel getTabPanel() {
 
	tabPanel = new HtmlTabPanel();
 
	HtmlTab tab = null;
	for (Person p : getList()) {
		tab = new HtmlTab();
		tab.setLabel(p.getName());			
 
		tabPanel.getChildren().add(tab);
	}		
	return tabPanel;		
}
Dans ce cas, les onglets se construisent correctement. Par contre, je ne sais pas comment inclure une page dans ces onglets....

Est-ce que quelqu'un aurait une piste ?...ou une meilleure approche ?

Merci d'avance pour votre aide.

Christo