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 :

Problème de composant dupliqué(Client-id : footer is duplicated in the faces tree)


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut Problème de composant dupliqué(Client-id : footer is duplicated in the faces tree)
    Bonjour à tous,

    je suis sur une interface utilisateur en JSF, et j'ai un problème assez récurrent de composant dupliqué.

    En principe, l'utilisateur remplit un formulaire, et quand il veut faire apparaitre un champ optionnel, il y a une validation car la page est rechargée, et à ce moment là si il n'a pas remplit les champs obligatoire ils sont indiqués en rouge.

    Mais dans pas mal de cas(aucune différence trouvée entre les pages jsp ni les beans correspondant) au lieu de celà j'obtiens une page d'erreur car c'est comme si la page rechargée voulait ajouter des composants identiques:

    Client-id : footer is duplicated in the faces tree. Component : footer, path: {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /mainFrame.jsp][Class: org.apache.myfaces.custom.div.Div,Id: _idJsp194][Class: org.apache.myfaces.custom.div.Div,Id: _idJsp195][Class: javax.faces.component.UINamingContainer,Id: footer]}

    Caused by:
    java.lang.IllegalStateException - Client-id : footer is duplicated in the faces tree. Component : footer, path: {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /mainFrame.jsp][Class: org.apache.myfaces.custom.div.Div,Id: _idJsp194][Class: org.apache.myfaces.custom.div.Div,Id: _idJsp195][Class: javax.faces.component.UINamingContainer,Id: footer]}

    A noter que footer est une page jsp importée
    (<t:div styleClass="footer">
    <c:import url="/WEB-INF/jsp/footer.jsp" />
    </t:div>)
    dans la page principale , mainframe.jsp , et qu'en le supprimant de la page c'est un autre composant dupliqué qui fait planter le truc, donc j'imagine que c'est récurrent.

    Dans le debug de firefox il y a bien deux elements footer de ce type:
    <UINamingContainer id="footer" rendered="true" transient="false">


    Si quelqu'un avait une idée pour éviter ce problème ça m'aiderait beaucoup.
    Peut être en supprimant/réinitialisant les éléments à chaque action?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ne jamais faire d'import avec JSF! JSF ne réagit pas très bien avec les taglibs JSP conditionnelles. A la place des imports en JSF, utilise les subview. Dans ton JSP principal tu défini un View, dans ton JSP inclus tu défini une autre view et au lieu de l'import tu fait un subview (ajout d'une vue dans une vue).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <f:subview id="myIncludedPage">
    <jsp:include page="/pages/whatever.jsp"/>
    </f:subview>
    L'utilisation d'include au lieu de import rend l'inclusion à la fois non conditionelle (elle a lieu à la compilation du jsp) et garanti qu'on ne va pas sortir du servlet JSF (contrairement à import qui fait un rendu séparé du JSP inclu avant de copier le résultat dans le JSP maitre)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Merci beaucoup pour le tuyau !
    J'essaie de changer ça dès que possible pour voir ce que ça donne.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Aussi, myfaces est assez laxiste sur les duplicate Id dans l'arbre, je sais pas dans quelle condition il les détectes, mais je crois me souvenir que la RI de sun est plus stricte, donc tu verra peut etre plus vite ou est ton problème en remplacant temporairement myfaces par sun-ri

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    J'ai essayé en incluant la subview dans ma mainframe.jsp:
    <f:subview id="footer">
    <jsp:include page="/WEB-INF/jsp/footer.jsp"/>
    </f:subview>
    (la jsp footer était déjà une subview)
    même erreur de duplicate id sur la footer apparemment .

  6. #6
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Peux tu nous montrer ton datatable complet?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Dans la jsp principale j'ai ces composants:

    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
    <body onload="scrollPos();" onkeydown="showDown(event);">
    <f:view>
    <t:div styleClass="pageContainer">
    <t:div styleClass="title">
    <c:import url="/WEB-INF/jsp/header.jsp" />
    </t:div>
    <t:div styleClass="left">
    <c:import url="/WEB-INF/jsp/businessMenu.jsp" />
    </t:div>
    ....
    <t:div styleClass="clear">
    <t:div styleClass="footer">
    <f:subview id="footer">
    <jsp:include page="/WEB-INF/jsp/footer.jsp"/>
    </f:subview>
    </t:div>
    ....
    </t:div>			
    </f:view>
    </body>


    Et dans la page qui pose problème à priori (footer.jsp) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@include file="/WEB-INF/taglibs.jspf"%>
     
    <f:subview id="footer">
    	<h:form>
    		<t:div style="float:right;">
    .........
    </t:div>
    	</h:form>	
    	<t:div styleClass="clearAll" />
    </f:subview>

  8. #8
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Peux tu nous donner maintenant le code source interprété, c'est a dire le code html retourné au navigateur (avant l'exception). Il faudrait aussi le message d'erreur avec l'id du composant posant problème (sauf si c'est le même que précédemment) ainsi que l'intégralité du code (cette fois dans l'éditeur) de ta subview JSF.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Malheureusement mon server d'application est mort(OAS).
    Il se passe la même chose sous weblogic.
    Je vais essayer d'avoir cette page.
    Dans le code html généré, il y avait bien deux éléments footer donc avec l'id footer .

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a mon avis, soit tu fait l'include deux fois, soit tu a deux id "footer" pour des composant totalement différent. Un recherche dans tous tes fichiers sur "footer" devrais probablement t'inquiquer tout ce qui pointe vers du footer.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Après recherche j'ai effectivement un composant dans une page jsp un peu perdue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <f:facet name="footer">
    <t:dataScroller id="scroll_2" styleClass="listbox_nav" for="DataTable"	renderFacetsIfSinglePage="false"		paginator="true"paginatorActiveColumnClass="paginatorActiveColumn">
    <f:facet name="previous">
    <h:outputText value="#{lab.scrollPrev}" />
    </f:facet>
    <f:facet name="next">				            	<h:outputText value="#{lab.scrollNext}" />
     </f:facet>
     </t:dataScroller>
    </f:facet>
    Je vais donc essayer de changer son nom, et en suite de redeployer tout.

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    devrait pas jouer, le nom d'une facet et son id sont différent. De plus ton facet est dans un datascroller, il aura donc un id de la forme <datascrollerId>:<facetId>

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Effectivement ça n'a pas fonctionné .
    J'ai trouvé aucun autre composant footer dans l'appli.

  14. #14
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Donnes nous de code de ta datatable !
    j'ai déjà eu cette erreur ça venait pas du tout du footer mais des header des colonnes.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Dsl j'étais en formation jusque auj et je pars en vacances ce soir. Je mets le code au retour! Merci pr votre aide en tout cas.

Discussions similaires

  1. [ENVOI D'EMAIL] Problème de composant CDONTS
    Par ybenmakh dans le forum ASP
    Réponses: 1
    Dernier message: 10/01/2006, 15h43
  2. Réponses: 7
    Dernier message: 06/01/2006, 09h33
  3. Problème de composant
    Par leycho dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2006, 16h04
  4. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 00h12
  5. [VB.NET] Problème sur composant comboBox hérité
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 14h54

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