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?
Partager