7
votes

PrimeFaces Tabview: Définissez l'index actif sur l'onglet Modifier

J'ai une vue de tabulation contenant deux onglets.

Lorsque je passe à partir de l'onglet 1 à l'onglet 2, j'appelle un code qui exécute une validation et met à jour certaines valeurs. Selon le résultat de cette validation, j'aimerais rester sur l'onglet 1 ou passer à l'onglet 2 et rafraîchissez le contenu des onglets. P>

My Tabview: P>

public void doStuff() {
    // ...
    idx = 0;
}


0 commentaires

3 Réponses :


0
votes

Essayez de conserver votre Tabview dans Panelgrid comme vitrage et mettez à jour ce H: PanelGrid CODE>

h:panelGrid id="mainPanel">

<p:tabView id="tabview" activeIndex="#{ctrl.idx}" dynamic="true" cache="false">  
        <p:ajax event="tabChange" listener="#{ctrl.doStuff}" update=":form:mainPanel"/>
        <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:panelGrid>


1 commentaires

J'ai déjà essayé cela mais ça ne change rien. Seul le contenu des onglets est dans la réponse, le conteneur Tabview "disparaît".



10
votes

Essayez de lier votre comprimé Tabview à l'instance de composant latéral du serveur dans votre haricot de support.

1.Ajouter l'instance de composant Tabview à votre haricot de support P>

public void doStuff() {
    // ...
    //idx = 0;
    tabview.setActiveIndex(0);
}


2 commentaires

De nombreux upvotes, mais cela ne fonctionne que si vous mettez à jour complètement l'onglet. Et puis il vaut mieux utiliser la liaison d'une liaison d'utilisation de l'utilisation tabindex = # {yourbean.idx} '


Note pour toute personne lisant le commentaire ci-dessus, il devrait être: actifindex = "# {mybean.tabindex}" , pas tabindex



4
votes

Je fixe facile ceci avec: xxx pré>

dans courantData J'ai la propriété sp_index avec un numéro d'onglet (premier, seconde ....) p>

<script>
  $("#tabView li:nth-child(#{currentData.SP_Index})").click();
</script>


1 commentaires

L'avantage de cette solution sur l'utilisation de l'attribut ActiveIndex est que le Tabview n'a pas besoin d'être mis à jour complètement