2013-01-09 16 views
6

Ho bisogno di aggiornare p: tabView dopo aver eseguito un'azione (per visualizzare messaggi di errore ecc.).Come aggiornare solo la scheda attiva di p: tabView?

I campi da convalidare si trovano in varie schede. Quando aggiorno l'intero tabView, questo è ovviamente un comportamento bacato, perché in PrimeFaces le schede invisibili non dovrebbero essere aggiornate (perché i campi di modifica sono invisibili e quando vengono aggiornati perdono i loro valori, ad esempio p: autoComplete is annullato).

Quindi, dovrei aggiornare solo la scheda attiva, ma come targetizzare con attributo di aggiornamento di commandButton solo la scheda attiva, non l'intero p: tabView?

risposta

4

Ho fatto un breve esempio:

<h:form id="form"> 
    <p:tabView id="tabview"> 
     <p:tab title="tab 1"> 
      <p:commandButton value="update" update="@parent" /> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab2"> 
       <p:commandButton value="update" update=":form:tabview:tab2" /> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
</h:form> 

Tuttavia, quando aggiorno il p:tab per ID o utilizzando @parent (come faccio io a scheda 1) la linguetta (div) viene cancellato, strano. .. Una soluzione è avvolgere il contenuto della scheda in un contenitore come ho fatto nella scheda 2.


HA! Trovato il motivo per cui non è possibile aggiornare una scheda direttamente: https://code.google.com/p/primefaces/issues/detail?id=3518

Esempio con il pulsante al di fuori del TabView:

<h:form id="form"> 
    <p:tabView id="tabview" binding="#{tabView}"> 
     <p:ajax event="tabChange" update=":form:button" /> 
     <p:tab title="tab 1"> 
      <p:outputPanel id="tab0"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab1"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
    <p:commandButton id="button" value="update" 
     update=":form:tabview:tab#{tabView.activeIndex}" /> 
</h:form> 
+0

Ma non ho scritto i pulsanti sono scheda all'interno, e sono non nel mio caso. –

+0

E l'aggiornamento dell'intera tabView fa sì che i valori delle schede invisibili vengano reimpostato su null –

+0

@lechlukasz vedi aggiornamento con il pulsante fuori dal tabview ;-) – siebz0r

Problemi correlati