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 :

Erruer "Duplicate Id for a component"


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 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut Erruer "Duplicate Id for a component"
    Bonjour,
    J'utilise JSF, Facelet et Richfaces. Je me retrouve aujourd'hui avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    duplicate Id for a component j_id65:j_id69:j_id79
    Je n'avais pas mis d'id pour les deux composants en question, donc il est sensé en être généré un unique... il y a-t-il un bug?

    Mon duplicate id n'apparait pas non plus à la première ouverture du site, mais si je reload ma page par exemple

    Quelqu'un a-t-il déjà eu ce pb et l'a-t-il résolu?

    Merci d'avance!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    tu as forcément un id qui a été setté à la main pour deux composants différents (avec la même valeur) ca peut être des selectItems par example$

    montre ton code jsf

  3. #3
    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 utilise un binding dans ta page?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    oui il y a plusieurs binding dans ma page

    l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    duplicate Id for a component j_id65:j_id69:j_id73
    c'est une page "menu", il y a deux rich:modalPanel puis le menu proprement dit, voici le code du 1er modalPanel qui a le pb des id

    le xhtml
    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
     
    <f:subview>
    ...
            <rich:modalPanel id="confirmMPAnnualInterview" autosized="true" mode="ajax">
                <f:facet name="header">
                    <h:outputText value="#{messages.generalMenu_newAnnualInterview}"/>
                </f:facet>
                <f:facet name="controls">
                    <h:panelGroup>
                        <h:graphicImage alt="X" url="/images/close.png" style="cursor:pointer"  id="controlCloseconfirmMPAnnualInterview"/>
                        <rich:componentControl for="confirmMPAnnualInterview" attachTo="controlCloseconfirmMPAnnualInterview" operation="hide" event="onclick"/>
                    </h:panelGroup>
                </f:facet>
                <h:panelGroup id="confirmMPAnnualInterviewContent">
                    <h:form>
                        <h:panelGrid columns="2"> 
                            <h:outputText value="Salarié"/>
                            <h:selectOneListbox binding="#{NewAnnualInterviewBean.selectEmployeeComponent}" converter="StringConverter" immediate="true" required="false"
                                                size="1" valueChangeListener="#{NewAnnualInterviewBean.changeSelectEmployee}">
                                <f:selectItem itemValue="" itemLabel="Please select..." enabled="false"/>
                                <f:selectItems value="#{SessionBean.employeesSelects}"/>
                                <a4j:support event="onchange" immediate="true"  ajaxSingle="true" reRender="confirmMPAnnualInterviewContent"/>
                            </h:selectOneListbox>
                            <h:outputText value="Année"/>
                                <h:selectOneListbox binding="#{NewAnnualInterviewBean.selectYearComponent}" converter="StringConverter" immediate="true" required="false"
                                                size="1" valueChangeListener="#{NewAnnualInterviewBean.changeSelectYear}">
                                <f:selectItems value="#{NewAnnualInterviewBean.yearSelects}"/>
                                <a4j:support event="onchange" immediate="true"  ajaxSingle="true" reRender="confirmMPAnnualInterviewContent"/>
                            </h:selectOneListbox>
                            <!--<h:outputText value="Evénement associé"/>
                            <h:selectOneListbox binding="#{NewAnnualInterviewBean.selectAnnualAssocEventComponent}" converter="StringConverter" immediate="true" required="false"
                                                size="1" valueChangeListener="#{NewAnnualInterviewBean.changeSelectAnnualAssocEvent}" rendered="#{NewAnnualInterviewBean.annualInterviewSelectAssocEventsRendered}">
                                <f:selectItems value="#{NewAnnualInterviewBean.annualsAssocEventSelects}"/>
                                <a4j:support event="onchange" immediate="true"  ajaxSingle="true" reRender="confirmMPAnnualInterviewContent"/>
                            </h:selectOneListbox>-->
                            <rich:spacer height="20px" /><rich:spacer height="20px" />
                            <a4j:commandButton id="annualBtnCancel" value="Cancel" onclick="#{rich:component('confirmMPAnnualInterview')}.hide();return false"/>
                            <a4j:commandButton id="annualBtnOK" value="OK"  action="#{NewAnnualInterviewBean.createNewAnnualInterview}" onclick="#{rich:component('confirmMPAnnualInterview')}.hide();"
                                               reRender="centrepanel" rendered="#{NewAnnualInterviewBean.annualInterviewBtnOKRendered}">
                                <a4j:actionparam value="/newAnnualInterview.xhtml" assignTo="#{GeneralMenuBean.url}"/>
                            </a4j:commandButton>
                        </h:panelGrid>
                    </h:form>
                </h:panelGroup>
            </rich:modalPanel>
    ...
    ce qui me donne du
    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
    49
    50
     
        <HtmlPanelGroup id="confirmMPAnnualInterviewContent" rendered="true" transient="false">
     
            <HtmlForm enctype="application/x-www-form-urlencoded" id="j_id69" prependId="true" rendered="true" submitted="false" transient="false">
     
                <HtmlPanelGrid border="-2147483648" columns="2" id="j_id70" rendered="true" transient="false">
     
                    <HtmlOutputText escape="true" id="j_id71" rendered="true" transient="false" value="Salarié"/>
     
                    <HtmlSelectOneListbox converter="acsformation.war.converters.StringConverter@1364c09" disabled="false" id="j_id72" immediate="true" localValueSet="false" onchange="A4J.AJAX.Submit('_viewRoot','j_id65:j_id69',event,{'control':this,'similarityGroupingId':'j_id65:j_id69:j_id75','parameters':{'j_id65:j_id69:j_id75':'j_id65:j_id69:j_id75','ajaxSingle':'j_id65:j_id69:j_id72'} ,'actionUrl':'/ACSFormationEE-war/home.faces'} )" readonly="false" rendered="true" required="false" size="1" transient="false" valid="true" binding="#{NewAnnualInterviewBean.selectEmployeeComponent}">
                        org.ajax4jsf.ajax.SUPPORTonchange
     
                        <HtmlAjaxSupport ajaxSingle="true" bypassUpdates="false" disableDefault="false" disabled="false" event="onchange" id="j_id75" ignoreDupResponses="false" immediate="true" limitToList="false" rendered="true" requestDelay="-2147483648" timeout="-2147483648" transient="false"/>
     
                        <UISelectItem id="j_id73" itemDisabled="false" itemEscaped="true" itemLabel="Please select..." itemValue="" rendered="true" transient="false"/>
     
                        <UISelectItems id="j_id74" rendered="true" transient="false"/>
     
                    </HtmlSelectOneListbox>
     
                    <HtmlOutputText escape="true" id="j_id73" rendered="true" transient="false" value="Année"/>
     
                    <HtmlSelectOneListbox converter="acsformation.war.converters.StringConverter@1b9f4ee" disabled="false" id="j_id74" immediate="true" localValueSet="false" onchange="A4J.AJAX.Submit('_viewRoot','j_id65:j_id69',event,{'control':this,'similarityGroupingId':'j_id65:j_id69:j_id79','parameters':{'j_id65:j_id69:j_id79':'j_id65:j_id69:j_id79','ajaxSingle':'j_id65:j_id69:j_id74'} ,'actionUrl':'/ACSFormationEE-war/home.faces'} )" readonly="false" rendered="true" required="false" size="1" transient="false" valid="true" binding="#{NewAnnualInterviewBean.selectYearComponent}">
                        org.ajax4jsf.ajax.SUPPORTonchange
     
                        <HtmlAjaxSupport ajaxSingle="true" bypassUpdates="false" disableDefault="false" disabled="false" event="onchange" id="j_id79" ignoreDupResponses="false" immediate="true" limitToList="false" rendered="true" requestDelay="-2147483648" timeout="-2147483648" transient="false"/>
     
                        <UISelectItems id="j_id78" rendered="true" transient="false"/>
     
                    </HtmlSelectOneListbox>
     
                    <HtmlSpacer height="20px" id="j_id75" rendered="true" title="" transient="false" width="1"/>
     
                    <HtmlSpacer height="20px" id="j_id76" rendered="true" title="" transient="false" width="1"/>
     
                    <HtmlAjaxCommandButton ajaxSingle="false" bypassUpdates="false" disabled="false" id="annualBtnCancel" ignoreDupResponses="false" immediate="false" limitToList="false" onclick="document.getElementById('j_id65:confirmMPAnnualInterview').component.hide();return false" rendered="true" requestDelay="-2147483648" size="-2147483648" timeout="-2147483648" transient="false" value="Cancel"/>
     
                    <HtmlAjaxCommandButton action="#{NewAnnualInterviewBean.createNewAnnualInterview}" actionExpression="#{NewAnnualInterviewBean.createNewAnnualInterview}" ajaxSingle="false" bypassUpdates="false" disabled="false" id="annualBtnOK" ignoreDupResponses="false" immediate="false" limitToList="false" onclick="document.getElementById('j_id65:confirmMPAnnualInterview').component.hide();" rendered="false" requestDelay="-2147483648" size="-2147483648" timeout="-2147483648" transient="false" value="OK">
     
                        <HtmlActionParameter assignToBinding="#{GeneralMenuBean.url}" id="j_id77" name="j_id65:j_id69:j_id77" noEscape="false" rendered="true" transient="false" value="/newAnnualInterview.xhtml"/>
     
                    </HtmlAjaxCommandButton>
     
                </HtmlPanelGrid>
     
            </HtmlForm>
     
        </HtmlPanelGroup>
     
    </HtmlModalPanel>

  5. #5
    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
    ce problème survient quand ya un binding dans un bean session et ça arrive même sans richfaces,
    vérifie que tu n'a pas d'erreurs avec les binding..

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    De quelle type d'erreur peut-il s'agir (pour le binding)? J'ai un peu fouiné, je n'ai rien vu

    Sinon pendant ce temps, j'ai aussi procédé par suppression de code dans la page pour voir d'où ça pouvait venir... en fait ça ne vient pas de cette page. Cette page est appelé via un template "templateBase" et une page de base:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <ui:composition template="templates/templateBase.xhtml">
            <ui:define name="entete">logo</ui:define>
            <ui:define name="content">
                <h:panelGrid columns="1" width="100%">
                    <h:panelGroup>
                        <ui:include src="#{GeneralMenuBean.url}"/>
                    </h:panelGroup>
                </h:panelGrid>
            </ui:define>
        </ui:composition>
    Il se trouve que pour une raison mystérieuse, si je ne met rien à la place du mot logo dans "entete" (ou si je ne le défini pas), j'ai cette erreur... sinon tout va bien

    Par curiosité, si vous avez une idée... sinon je vais considéré que c'est résolu et je ne ferai plus de templates sans définition par défaut...

    Merci!

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    mon problème est réapparu (quasiment sur les mêmes champs) suite à une modification d'en un tout autre fichier... j'ai une instabillité bizarre

  8. #8
    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
    Citation Envoyé par Chatastroff Voir le message
    mon problème est réapparu (quasiment sur les mêmes champs) suite à une modification d'en un tout autre fichier... j'ai une instabillité bizarre
    il faut soigner les includes.fait attention au namespaces en double et ajoute des subview..

    tu na pas de composants a4j tel que a4j:status dans tes pages?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    help...
    Maintenant c'est donc l'inverse: si je define mon "entete" j'ai mon problème de duplicate id

    Dans mon template j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="headercentre">
       <ui:insert name="entete"></ui:insert>
    </div>
    Est ce que cela pourrait venir de l'utilisation de balise div au mileu de jsf???? Est ce que généralement on peut mélanger jsf et code html simple? Ceci est utilisé dans les démos richfaces, donc j'ai supposé que oui...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    pas de compasants a4j:status (mais j'ai des a4j:outputPanel, a4j:includes, etc)

  11. #11
    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
    ya quoi dans l'entete?
    si tu enleve les bindings pour vérifier si le problème vient de là? car si c'est ça ..richfaces n'est pas en cause, c'est un problème de JSF et Facelets.

    la définition des divs ne peut pas être en cause, ça dépend de ce que tu as mis dans la page..
    tu as vérifier le code généré si tu as des balises en doubles?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    Bonjour
    J'ai enlevé les bindings, le problème a disparu (définitivement j'espère...)... je vous tiens au courant si ça revient

    Sinon dans l'entête il n'y a rien justement, et pour les balises en doubles je n'ai rien trouvé

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

Discussions similaires

  1. [2012] for xml, remplacement quote
    Par jord140 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 28/05/2014, 11h53
  2. Réponses: 7
    Dernier message: 29/11/2010, 17h34
  3. duplicate entry for key 'primary'
    Par mariek dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/09/2009, 16h43

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