Ho una vista a schede che contiene due schede.Tabview Primefaces: imposta l'indice attivo su modifica scheda
Quando passo dalla scheda 1 alla scheda 2, chiamo un codice che esegue una convalida e aggiorna alcuni valori. A seconda del risultato di questa convalida, desidero rimanere nella scheda 1 o andare alla scheda 2 e aggiornare il contenuto delle schede.
mio 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>
mio codice di prova che cambia simly i valori:
public void doStuff() {
s1 = String.valueOf(Math.random());
s2 = String.valueOf(Math.random());
}
ho pensato che cambiare l'indice di scheda attiva nel mio metodo sarebbe sufficiente, come quella:
public void doStuff() {
// ...
idx = 0;
}
Su evento tabChange, il metodo viene chiamato ma i componenti TabView va al ta cliccato b, ignorando il nuovo valore idx
.
Ho pensato di aggiungere un attributo di aggiornamento a p:ajax
per eseguire il rendering dell'intera tabview ma solo il rendering delle schede e/o del contenuto delle schede.
E più strana di tutte, se cambio update=":form:tabview"
a update=":form"
o update="@form"
, ricevo solo il contenuto della scheda nella risposta Ajax -> la componente scompare dalla pagina!
mio fagiolo è viewscoped, sto usando primefaces 3.5, JSF 2.1 e Tomcat 7.
Qualche idea? Grazie.
Ho già provato che, ma non cambia nulla. Solo il contenuto delle schede è nella risposta, quindi il contenitore Tabview "scompare". – Virginie