Gibt es eine Möglichkeit, dynamisch <rich: tab> -Elemente zu erstellen?
Lass uns sagen, dass ich einen Variablensatz von @ erstellen möch<rich:tab>
Elemente innerhalb eines<rich:tabPanel>
Komponente. Also habe ich versucht, das so zu machen:
<rich:tabPanel switchType="client" ...>
<ui:repeat value="#{myBean.myTabs}" var="tab">
<rich:tab name="#{tab.name}" label="#{tab.label}"/>
</ui:repeat>
</rich:tabPanel>
Aber es hat nicht funktioniert, da kein Tab gerendert wird. Ich habe auch die folgende Meldung in den Protokollen:
j_id174: tab panel has no enabled or rendered tabs!
Dieses Problem scheint bei anderen Menschen anzutreffen, zum BeispielHie.
So wie im vorherigen Thread vorgeschlagen, habe ich mein @ erset<ui:repeat>
durch eine<c:forEach>
aber das Problem tritt immer noch auf.
Ich habe eine Möglichkeit, dieses Problem mit dem @ zu lösebinding
Attribut meines<rich:tabPanel>
component:
<rich:tabPanel switchType="client" binding="#{tabNavigationBean.tabPanel}"
</rich:tabPanel>
und dann in meinem Java Bean:
private HtmlTabPanel tabPanel; // + getter and setter
public void setTabPanel(HtmlTabPanel tabPanel) {
this.tabPanel = tabPanel;
if (tabPanel != null) {
createTabs();
}
}
private void createTabs() {
Application application = FacesContext.getCurrentInstance().getApplication();
HtmlTab newTab = null;
for (DedicatedPageTab dpt : getDedicatedPageTabs()) {
newTab = (HtmlTab) application.createComponent(HtmlTab.COMPONENT_TYPE);
newTab.setLabel(dpt.getLabel());
newTab.setName(dpt.getName());
tabPanel.getChildren().add(newTab);
}
}
Dieser Code funktioniert.
Allerdings ist meine Frage zu wissen, ob ich mein Problem lösen kannohn Verwendung derbinding
-Attribut (d. h. eine 100% reine XHTML-Lösung)?