[richfaces] tabPanel dynamique
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:
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:
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:
1 2
|
<rich:tabPanel binding="#{tabBean.tabPanel}"/> |
Code:
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
Ce n’est tout simplement pas possible
Bon, et bien j’ai trouvé la solution moi-même. Enfin, la solution, c’est beaucoup dire, plutôt l’explication du dysfonctionnement. Sur la page de la documentation de a4j:include, je cite :
Citation:
6.6.3. Creating the Component Dynamically Using Java
This component cannot be created dynamically.
Je cherche un contournement, peut être en suivant cette voie.