Позвольте сказать, что я хочу создать переменную набор из <rich:tab>
элементов в составе <rich:tabPanel>
. Поэтому я попытался сделать так:Есть ли способ создать динамически <rich:tab> элементов?
<rich:tabPanel switchType="client" ...>
<ui:repeat value="#{myBean.myTabs}" var="tab">
<rich:tab name="#{tab.name}" label="#{tab.label}"/>
</ui:repeat>
</rich:tabPanel>
Но это не сработало, поскольку никакая вкладка не отображается. Я также получил следующее сообщение в логах:
j_id174: tab panel has no enabled or rendered tabs!
Эта проблема, кажется, с которыми сталкиваются другие люди, например here.
Как и в предыдущем разделе, я заменил <ui:repeat>
на <c:forEach>
, но проблема все еще возникает.
У меня есть способ решить эту проблему, используя атрибут моего <rich:tabPanel>
компонента binding
:
<rich:tabPanel switchType="client" binding="#{tabNavigationBean.tabPanel}"
</rich:tabPanel>
, а затем в моей 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);
}
}
Этот код работает.
Однако, на мой вопрос, чтобы узнать, могу ли я решить мою проблему без с помощью атрибута binding
(т.е. 100% раствора чистого XHTML)?
Техническая информация: Java 1.6, JSF 1.2 + Facelets, RichFaces 3,3 – romaintaz
я не знаю, если это будет работать лучше, но попробовать? –
Naganalf
@Naganalf также пытался, без успеха :( – romaintaz