IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Inclusions dans rich:tabPanel


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Par défaut Inclusions dans rich:tabPanel
    Bonjour j'utilise ce programme qui créé un menu à onglets.
    Visuellement, tout fonctionne très bien.
    Par contre, à chaque fois que je clique sur un onglet, les méthodes beans des onglets non sélectionnés sont exécutés. Par contre seul le code de mise à jour de l'onglet sélectionné est ramené (ce qui est comportement attendu).
    Comment faire pour éviter cela ?
    Merci.

    Source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <!-- RichFaces tag library declaration -->
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
     
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <f:view>
       <f:loadBundle basename="ressources.biblioRessources" var="msg" />
     
    <head>
      <title><h:outputText value="#{msg.biblio_titre}" /></title>
      <link href="styles/style.css" rel="stylesheet" type="text/css" />
    </head>
     
    <body topmargin="0" leftmargin="0" bgcolor="#DDFFDD">
     
     
            <%-- Panneau d'onglets --%>
        <rich:tabPanel switchType="Ajax" width="100%" height="100%" selectedTab="#{ongletBean.onglet}">
     
                    <%-- 1er onglet --%>
            <rich:tab name="accueil" label="Accueil">
                <f:subview id="sv_accueil"> 
                       <jsp:include page="accueil.jsp" />
                   </f:subview>    
            </rich:tab>
     
                    <%-- 2ème onglet --%>
            <rich:tab name="listedemo" label="Listedemo">
                <f:subview id="sv_listedemo">  
                       <jsp:include page="listeDemo.jsp" />
                   </f:subview>    
            </rich:tab>
     
     
            <rich:tab name="liste" label="Liste livres">
                <f:subview id="sv_liste">  
                       <jsp:include page="liste.jsp" />
                   </f:subview>    
            </rich:tab>
     
        </rich:tabPanel>
      </body>    
    </f:view>
    </html>

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu peux expliquer plus?
    Citation Envoyé par christie Voir le message
    Par contre, à chaque fois que je clique sur un onglet, les méthodes beans des onglets non sélectionnés sont exécutés.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Par défaut Précisions sur le cas
    Voici la JSP (demo.jsp) : J'ai un rich:tabpanel avec 3 onglets.
    A Chaque onglet correspond un include.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <!-- RichFaces tag library declaration -->
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <f:view>
       <f:loadBundle basename="ressources.biblioRessources" var="msg" />
     
    <head>
      <title><h:outputText value="#{msg.biblio_titre}" /></title>
      <link href="styles/style.css" rel="stylesheet" type="text/css" />
    </head>
     
    <body topmargin="0" leftmargin="0" bgcolor="#DDFFDD">
     
     
    		<%-- Panneau d'onglets --%>
        <rich:tabPanel switchType="Ajax" width="100%" height="100%" selectedTab="#{ongletBean.onglet}">
     
            <rich:tab name="listedemo" label="Listedemo">
            	<f:subview id="sv_listedemo">  
           			<jsp:include page="listeDemo.jsp" />
           		</f:subview>	
            </rich:tab>
     
            <rich:tab name="liste" label="Liste livres">
            	<f:subview id="sv_liste">  
           			<jsp:include page="liste.jsp" />
           		</f:subview>	
            </rich:tab>
     
            <rich:tab  name="rechid" label="Recherche par Id">
            	<f:subview id="sv_rechid"> 
           			<jsp:include page="rechId.jsp" />
           		</f:subview>	
            </rich:tab>
     
        </rich:tabPanel>
      </body>	
    </f:view>
    </html>
    Chacun de ces include exploite un bean différent. Voici un extrait de chaque include.
    liste.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:form id="liste">	
    <div align="center">
      <%-- <rich:datascroller> --%>
      <rich:datascroller for="listeLivre" maxPages="20" />
       <rich:dataTable value="#{listeBean.livresTrouves}" var="livre" width="480" id="listeLivre" rows="10" columnClasses="col">
    listeDemo.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h:form id="liste">	
    <div align="center">
    <%-- <rich:datascroller> --%>
    <rich:datascroller for="listeLivre" maxPages="20" />
    <rich:dataTable value="#{listeDemoBean.resultats}" var="resultat" width="480" id="listeResultat"   rows="5" columnClasses="col">
    . .  .
    rechId.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
          <h:form id="rechIdForm">
            <h:panelGroup>
              <h:outputLabel for="idLivre" value="#{msg.livre_id_label}" />
              <f:verbatim> : </f:verbatim> 
              <h:inputText id="idLivre" value="#{rechIdBean.idLivre}" required="true" />
            </h:panelGroup>
            <h:message for="idLivre" /> 
            <br/>
            <h:commandButton action="#{rechIdBean.rechercherLivre}" styleClass="btn" value="#{msg.btn_valider}" />
            <br/>
    . ..
    Dans chaque bean, j'ai un system.out.println() qui affiche dans le log le passage dans le bean.
    Quelque soit l'onglet sur lequel je clique, j'ai un passage systématique dans chacun de ces beans. Par contre la réponse renvoyée correspond bien à l'onglet sélectionné.
    Comment faire pour ne pas exécuter le code de tous ces beans ?

    Je peux éventuellement apporter des précisions supplémentaires si besoin.
    Merci.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    les beans sont instanciés, c'est normal, même si tu clique sur un onglet,
    les beans deux autres onglets existent dans la page..
    ça te pose un problème?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    Nous avons eu le même problème et avons ajouter des <c:if>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <rich:tab  name="rechid" label="Recherche par Id">
            <c:if test='${bean.tabSelectionne=="rechid"}'>
                   <f:subview id="sv_rechid"> 
                            <jsp:include page="rechId.jsp" />
                   	</f:subview>	
            </c:if>
    </rich:tab>
    G.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Par défaut
    Pour répondre à Sniper37, cela me semble étrange d'instancier coté serveur des beans qui ne servent à rien, surtout si ils sont nombreux. Du point de vue performance, cela ne me semble pas terrible ?

    Pour répondre à gazanova, je vais tester.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/02/2011, 09h38
  2. Réponses: 4
    Dernier message: 18/08/2009, 10h35
  3. Réponses: 9
    Dernier message: 30/04/2009, 18h13
  4. Probleme de composant inclus dans un autre.
    Par viro dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/04/2004, 15h44
  5. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo