# Duplicate Id Exception JSF



## Arnold1812 (9. Dez 2008)

Hi,

ich hab da ein Problem mit der Id meines RichFaces-Elements.
Immer wenn ich den JBoss gestartet habe, kann ich meine Webseite nur einmal aufrufen.
Beim zweiten Aufruf bekomme ich folgenden Stacktrace:


```
java.lang.IllegalStateException: duplicate Id for a component warenkorbTabelle:j_id50
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:50)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:72)
	at org.ajax4jsf.application.AjaxStateManager.getTreeStructureToSave(AjaxStateManager.java:188)
	at org.ajax4jsf.application.AjaxStateManager.buildViewState(AjaxStateManager.java:469)
	at org.ajax4jsf.application.AjaxStateManager.saveSerializedView(AjaxStateManager.java:427)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:615)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:196)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:566)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
	at java.lang.Thread.run(Thread.java:619)
```

Es liegt wohl an diesem XHTML-File:


```
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:rich="http://richfaces.org/rich">

	
		


			<rich:panelMenu width="95%" iconCollapsedGroup="triangleDown" 
							iconCollapsedTopGroup="triangleDown"
							iconExpandedGroup="triangleUp"
							iconExpandedTopGroup="triangleUp"
							iconItem="disc"
							itemStyle="background: white">
				<rich:panelMenuGroup label="#{i18n['navigation.bestellverwaltung.menutitle']}" expanded="true">
					<rich:panelMenuItem>
						
						<rich:extendedDataTable id="warenkorbTabelle" value="#{bv.warenkorb}" 
									var="warenkorb" binding="#{bv.tabelleWarenkorb}"
									height="150px">
									
							<rich:column width="40px" >
									<f:facet name="header">
										<h:outputText
											value="#{i18n['bestellverwaltung.Warenkorb.nr']}" />
									</f:facet>
								<h:outputText value="#{bv.tabelleWarenkorb.rowIndex+1}"/>
							</rich:column>
							
						</rich:extendedDataTable>
						<h:commandButton action="#{bv.init}" value="Aktualisieren"/>
						
					</rich:panelMenuItem>
				</rich:panelMenuGroup>									
			</rich:panelMenu>
		</p>
</ui:composition>
```

Ich würde euch gern noch mehr Code posten, weiß aber leider nicht was ihr braucht, das Projekt ist nämlich relativ umfangreich und ich kann nicht alles posten   

Danke schonmal!


----------



## gex (9. Dez 2008)

Ich gehe davon aus, dass dein Bean 'bv' session-scoped ist?
Dann könnte es in diese Richtung gehen (Problematik übrigens bei vielen JSF-Libraries mit component-bindings)

https://jira.jboss.org/jira/browse/RF-2218

Versuch mal dieses Property im web.xml zu setzen:

```
<context-param>
    <param-name>org.ajax4jsf.SERIALIZE_SERVER_STATE</param-name>
    <param-value>true</param-value>
</context-param>
```


----------



## Arnold1812 (10. Dez 2008)

Hallo gex,

danke für Deine Hilfe!
Aufgrund des Termindrucks habe ich nun von einer Vorschau direkt auf dem Index der Webseite abgesehen und arbeite jetzt mit einer externen XHTML-Seite.
Dort funktioniert alles ohne Probleme.

Sollte ich dem Problem noch auf die Spur kommen werde ich die Lösung hier posten.

Viele Grüße,
Arnold


----------

