ID de composant de formulaire:composite:j_id2 a déjà été trouvé dans la vue
/test.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite/components">
<f:view>
<h:head>
<title>Default Title</title>
</h:head>
<h:body>
<h:form id="form">
<composite:test id="composite"/>
</h:form>
</h:body>
</f:view>
</html>
/resources/components/test.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:composite="http://java.sun.com/jsf/composite/components"
xmlns:p="http://primefaces.org/ui">
<head>
<title>(For validation only)</title>
</head>
<body>
<cc:interface>
</cc:interface>
<cc:implementation>
<p:panel header="header foo bar">
<p:panel>
<f:facet name="header">
<h:outputText value="foo"/>
<h:outputText value="bar"/>
</f:facet>
</p:panel>
</p:panel>
</cc:implementation>
</body>
</html>
Cette combinaison donne:
GRAVE: Error Rendering View[/test.xhtml]
java.lang.IllegalStateException: Component ID form:composite:j_id2 has already been found in the view.
avec cet arbre:
GRAVE: JSF1007: Duplicate component ID form:composite:j_id2 found in view.
GRAVE: +id: j_id1
type: javax.faces.component.UIViewRoot@47080ae5
+id: javax_faces_location_HEAD
type: com.sun.faces.component.ComponentResourceContainer@2daf59b3
+id: j_id3
type: javax.faces.component.UIOutput@532a0e33
+id: j_id4
type: javax.faces.component.UIOutput@6e0a60ec
+id: j_id5
type: javax.faces.component.UIOutput@6b615e64
+id: j_id6
type: javax.faces.component.UIOutput@457c2e4f
+id: j_id7
type: javax.faces.component.UIOutput@5bc4682c
+id: j_id8
type: javax.faces.component.UIOutput@3b934fc5
+id: j_idt37
type: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+id: j_idt38
type: <html xmlns="http://www.w3.org/1999/xhtml">
+id: j_idt39
type: javax.faces.component.UIOutput@610364d1
+id: j_idt40
type:
<title>Default Title</title>
+id: j_idt55
type: javax.faces.component.UIOutput@25d00719
+id: form
type: javax.faces.component.html.HtmlForm@7c820db3
+id: composite
type: javax.faces.component.UINamingContainer@3e51a2a1
+id: j_id2
type: javax.faces.component.UIPanel@445a2d11
+id: j_idt52
type: org.primefaces.component.panel.Panel@618c17fd
+id: j_idt53
type: org.primefaces.component.panel.Panel@347b1513
+id: j_id2
type: javax.faces.component.UIPanel@7c44da25
+id: j_idt50
type: javax.faces.component.html.HtmlOutputText@7ca4ad4f
+id: j_idt54
type: javax.faces.component.html.HtmlOutputText@1f6e5d77
+id: j_idt47
type:
</html>
Cependant, si je change composite composante de cette façon:
/resources/components/test.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:composite="http://java.sun.com/jsf/composite/components"
xmlns:p="http://primefaces.org/ui">
<head>
<title>(For validation only)</title>
</head>
<body>
<cc:interface>
</cc:interface>
<cc:implementation>
<p:panel header="header foo bar">
<p:panel>
<f:facet name="header">
<h:panelGroup>
<h:outputText value="foo"/>
<h:outputText value="bar"/>
</h:panelGroup>
</f:facet>
</p:panel>
</p:panel>
</cc:implementation>
</body>
</html>
L'ajout d'un <h:panelGroup>
dans <f:facet>
résout le problème.
Mauvais arbre d'indexation ou ai-je raté quelque chose? Je suis en utilisant mojarra 2.1.3 et PrimeFaces 3.0.M4-INSTANTANÉ sous Glassfish 3.1.1.
Je suis face même genre de problème maintenant et voudrais vraiment l'apprécier quelques informations sur ce qui est exactement à l'origine du problème.
OriginalL'auteur Michele Mariotti | 2011-11-13
Vous devez vous connecter pour publier un commentaire.
Selon JSF2 documentation, Le
<f:facet>
balise peut avoir qu'un seul enfant. Si vous avez de nombreux éléments que vous souhaitez nid à l'intérieur d'une facette de la balise, vous devez d'abord l'envelopper dans un autre récipient comme<h:panelGroup>
, puis mettre que seul conteneur parent dans le<f:facet>
.exactement ce que vous avez fait!
Voici la référence:
JavaServer Faces 2.0, La Référence Complète - Auteurs: Ed Burns, Chris Schalk
(ISBN-10: 0071625097 | ISBN-13: 978-0071625098)
Numéro De La Page: 538
Résumé:
Vous avez raison, il n'est pas dans oracle références officielles! mais de toute façon je l'ai mentionné ma ressource 😉 Il n'a pas été Marashi 2.0 😀
OriginalL'auteur Marashi
Concernant l'erreur JSF1007 veuillez consulter ce : artilce
OriginalL'auteur user2779732