Mam widok karty zawierający dwie zakładki.Główne widoki tabview: ustawianie aktywnego indeksu na zmianę tabulatora
Kiedy przełączam się z zakładki 1 na zakładkę 2, wywołuję kod, który wykonuje walidację i aktualizuje niektóre wartości. W zależności od wyniku tej weryfikacji, chciałbym pozostać na karcie 1 lub przejść do karty 2 i odświeżyć zawartość kart.
Moja TabView:
<h:form id="form">
<p:tabView id="tabview" activeIndex="#{ctrl.idx}" dynamic="true" cache="false">
<p:ajax event="tabChange" listener="#{ctrl.doStuff}" update=":form:tabview"/>
<p:tab title="Tab 1" id="t1">
<h:panelGrid columns="1" cellpadding="10">
<h:outputText value="#{ctrl.s1}"/>
</h:panelGrid>
</p:tab>
<p:tab title="Tab 2" id="t2">
<h:panelGrid columns="1" cellpadding="10">
<h:outputText value="#{ctrl.s2}"/>
</h:panelGrid>
</p:tab>
</p:tabView>
</h:form>
Mój kod test, który simly zmienia wartości:
public void doStuff() {
s1 = String.valueOf(Math.random());
s2 = String.valueOf(Math.random());
}
myślałem, że zmiany aktywnego indeksu kartę w moim sposobem byłoby mało, tak:
public void doStuff() {
// ...
idx = 0;
}
W przypadku zdarzenia tabChange metoda jest wywoływana, ale komponenty widoku TabView są przesyłane do klikniętej tabeli b, ignorując nową wartość.
Pomyślałem, że dodanie atrybutu aktualizacji do p:ajax
spowodowałoby wyświetlenie całego widoku tabury, ale tylko karty i/lub zawartość kart zostanie ponownie wyświetlona.
I najdziwniejsza ze wszystkich, jeśli zmienię update=":form:tabview"
do update=":form"
lub update="@form"
, otrzymuję tylko jego zawartości Tab w odpowiedzi AJAX -> składnik znika ze strony!
Moja fasola jest viewscoped używam Primefaces 3.5, JSF 2.1 i Tomcat 7.
jakiś pomysł? Dzięki.
ja już próbowałem tego, ale to niczego nie zmienia. Tylko treść kart jest w odpowiedzi, dlatego kontener tabview "znika". – Virginie