Hi Thanks for the hint! I am using session scoped backing beans, and a custom component that does a kind of dynamic include, so the contents of the page dynamically depending on ist state. The binding properties were not set to null for the components, so this is the explaination for the problem. I set them to null, and everything is fine :-)
Thanks again for your help Mirko -----Ursprüngliche Nachricht----- Von: Simon Kitching [mailto:[EMAIL PROTECTED] Gesendet: Freitag, 4. Mai 2007 00:31 An: MyFaces Discussion Betreff: Re: Problem with duplicated client-ids Sertic Mirko, Bedag wrote: > Hi there > > I am having problems with the following exception : > > Caused by:_ org.apache.jasper.JasperException_: Client-id : _id9 is > duplicated in the faces tree. Component : _idJsp3:_id9, path: > {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: > /createevn.jsp][Class: oracle.adf.view.faces.component.html.HtmlHtml,Id: > _idJsp0][Class: oracle.adf.view.faces.component.html.HtmlBody,Id: > _idJsp2][Class: javax.faces.component.html.HtmlForm,Id: _idJsp3][Class: > ch.bedag.common.web.component.cdbund.CDBundPageComponent,Id: > _idJsp4][Class: > ch.bedag.common.web.component.layout.GridbagLayoutComponent,Id: > _idJsp26][Class: > ch.bedag.common.web.component.layout.GridbagLayoutCellComponent,Id: > _idJsp58][Class: > ch.bedag.common.web.component.layout.TitledBoxComponent,Id: > _idJsp59][Class: > ch.bedag.common.web.component.layout.GridbagLayoutComponent,Id: > _idJsp60][Class: > ch.bedag.common.web.component.layout.GridbagLayoutCellComponent,Id: > _idJsp62][Class: > ch.bedag.common.web.component.input.InputfieldComponent,Id: > _idJsp63][Class: javax.faces.component.UICommand,Id: _id9]} > > This happens when i navigate to the page, navigate to another page and > finally when i come back to the origin, the above > > exception is generated. The question is now : why is there a duplicate > id? I thought that the whole component tree would > be rebuild when a new page is accessed. It is a custom component, but it > worked very well in prior projects. The only > Difference is here that is use a binding for the component to access it > from a backing bean. Am i missing something? Is your binding stored in a bean that is session-scoped, ie still exists when you come to re-render the page? When using JSF1.1+JSP, the first render goes like this: For each JSF tag in the page, if the tag has a binding attribute then: * Read from the specified property. * If that returns non-null then attach the returned component to the view tree and at skip any further processing of that JSF tag. If no binding exists, or binding returns null then create a new component instance, set properties from tag. If no explicit id is defined on the tag then create a dynamic one. So yes binding can be related to this "duplicate id" problem. However it normally doesn't cause any problem because the id computed the first time it was created should be the same as on the next time. Do you perhaps have a <c:if> or <c:forEach> tag in the page so that on different renders there are different numbers of components actually created for the page? That would definitely cause problems when combined with bindings... I would suggest firstly to avoid using c:if or c:forEach if you are currently doing so. These tags interact very badly with JSF1.1. Secondly, having session-scoped beans with bindings that are still valid when a page is re-rendered after being somewhere else is not very nice. This is very memory-inefficient for a start; because each component has references to its parent and children this effectively holds the entire component tree for that view in memory for the length of the http session. You might want to look into using t:saveState + request-scoped backing beans instead. Regards, Simon