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)?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage