/ / Primefaces On-Demand Зареждане на компонент панел с табове не работи - jsf, jsf-2, primefaces

Плейфери при зареждане на табла не работят - jsf, jsf-2, primfaces

Аз се опитвам да направя Primefaces On-Demand Loading компонент панел, който има компонент inputTextArea вътре в него. Следвам този урок Урок за Primefaces, Моят .xhtml формуляр изглежда така:

<h:form>
<h:outputText
value="Write a comment" />
<p:tabView dynamic="true" cache="true">
<p:tab title="Possitive">
<h:panelGrid columns="2" cellpadding="10">
<p:inputTextarea rows="5" cols="130" />
</h:panelGrid>
</p:tab>
<p:tab title="Negative">
<h:panelGrid columns="2" cellpadding="10">
<p:inputTextarea rows="5" cols="130" />
</h:panelGrid>
</p:tab>
</p:tabView>
<p:commandButton value="Publish"></p:commandButton>
</h:form>

Но тези inputTextBox винаги са заредени, въпреки че не щракнах върху тях. Могат ли да се зареждат само при поискване и как да се направи това?

Благодаря предварително за помощта!

Отговори:

1 за отговор № 1

Primefaces изгражда JSF дърво за всички раздели. И двете inputTextarea (s) са създадени на сървърната страна. Може да бъде решен чрез ui: include. Поставете съдържанието на p: tab в допълнителен файл и използвайте ui: include, за да изтеглите съдържанието:

<p:tabView>
<p:tab title="Possitive">
<ui:include src="#{tabViewBean.getTabSource("tabPositive")}"/>
</p:tab>
<p:tab title="Negative">
<ui:include src="#{tabViewBean.getTabSource("tabNegative")}"/>
</p:tab>
</p:tabView>

TabViewBean държи името на активния раздел и се използва и за разрешаване на източници на табулации. Ако има раздела НЕАКТИВЕН след това методът tabViewBean.getTabSource () връща друг файл с EMPTY съдържание:

public String getTabSource(String tabName)
{
return tabName.equals(activeTabName) ?
getTabSourceForTabName(tabName) :
"EmptyTab.xhtml";
}

public String getTabSourceForTabName(String tabName)
{
if ("tabPositive".equals(tabName)) return "TabPositive.xhtml";
if ("tabNegative".equals(tabName)) return "TabNegative.xhtml";
}

Някъде трябва да имате EmptyTab.xhtml. Задаване на слушател в p: tabView за прослушване на събитие за промяна на раздела:

<p:tabView listener="#{tabViewBean.tabChangeListener}">

tabChange listener задава името на активния раздел:

public void tabChangeListener(UIComponentBase tabView)
{
activeTabName = getTabNameByIndex(tabView.getActiveIndex());
}

public String getTabNameByIndex(int index)
{
if (i==0) return "tabPositive";
if (i==1) return "tabNegative";
}