Aktywny indeks nie aktualizuje się automatycznie. ReaD w kilku postach, które umieszczając tabView na formularzu, działa. Lub przez włączenie <p:ajax event="tabChange"/>
w widoku tabla działa. Ale nic nie wydaje się działaćAktywny indeks tabview nie aktualizuje się automatycznie
xhtml
Próbka 1: automatyczne aktualizacje
<p:tabView id="categoryTabView" var="promoArticle" value="#{promotionDetailBean.artDTOs}" activeIndex="#{promotionDetailBean.activeTabIndex}">
<p:tab id="categoriesTab" title="#{promoArticle.categoryName}">
<p:dataTable id="promotionDetail_dataTable" var="articlePromo" value="#{promoArticle.artVO}" selection="#{promotionDetailBean.selectedArt}" rowIndexVar="rowIndex">
<p:column id="select" selectionMode="multiple" />
<p:column id="barCode">
<h:inputText id="barCodeInputTxt" value="#{articlePromo.barCode}"
styleClass="inputTextStyle" onchange="onSuggestedValueChange('categoryTabView',#{promotionDetailBean.activeTabIndex}, 'promotionDetail_dataTable',#{rowIndex},'originalCostInputTxt')" />
</p:column>
</p:dataTable>
</p:tab>
</p:tabView>
Próbka 2: aktualizowanie na razie tabChange
<h:form id="form">
<p:growl id="growlm" showDetail="true" />
<p:tabView id="categoryTabView" var="promoArticle" value="#{promotionDetailBean.artDTOs}" >
<p:ajax event="tabChange" listener="#{promotionDetailBean.tabChanged}" update=":growlm" />
<p:tab id="categoriesTab" title="#{promoArticle.categoryName}">
<p:dataTable id="promotionDetail_dataTable" var="articlePromo" value="#{promoArticle.artVO}" selection="#{promotionDetailBean.selectedArt}" rowIndexVar="rowIndex">
<p:column id="select" selectionMode="multiple" />
<p:column id="barCode">
<h:inputText id="barCodeInputTxt" value="#{articlePromo.barCode}"
styleClass="inputTextStyle" onchange="onSuggestedValueChange('categoryTabView',#{promotionDetailBean.activeTabIndex}, 'promotionDetail_dataTable',#{rowIndex},'originalCostInputTxt')" />
</p:column>
</p:dataTable>
</p:tab>
</p:tabView>
Muszę zidentyfikować komórkę w zdarzeniu "onChange". Ale activeIndex ma zawsze wartość 0, wartość inicjalizowana. Zdarzenie nie dostaje połączenia.
fasola
private Integer activeTabIndex = 0;
public Integer getActiveTabIndex() {
return activeTabIndex;
}
public void setActiveTabIndex(Integer activeTabIndex) {
this.activeTabIndex = activeTabIndex;
}
fasola
public void tabChanged(TabChangeEvent event){
TabView tv = (TabView) event.getComponent();
this.activeTabIndex = tv.getActiveIndex();
}
Ale zdarzenie nie jest uzyskiwanie trigerred. Nie aktualizuje się automatycznie.
Jakie mogą być prawdopodobne problemy?
Dzięki, Shikha
To wydaje się działać tylko wtedy, gdy [aktywny indeks nie jest powiązany z zarządzanym komponentem bean] (http://code.google.com/p/primefaces/issues/detail? id = 1640 & q = activeIndex & colspec = ID% 20Stars% 20Moduł% 20Type% 20Status% 20Priority% 20TargetVersion% 20Reporter% 20Owner% 20Podsumowanie). Jestem zaskoczony, że zespół Primefaces jeszcze go nie rozwiązał (pracuję z wersją 3.5). Działa to jednak, jeśli sam plik 'tabView' jest zawijany w formularz, zamiast mieć formularz dla każdej karty. –
this.activeTabIndex = tv.getActiveIndex(); nie działa. Zamiast tego możesz użyć this.activeTabIndex = tv.getChildren(). IndexOf (event.getTab()); – ahmet
zaczyna się od indeksu 0 lub 1? – xav56883728