O que fazer para nao acontecer isso. duplicate Id for a component

Pessoal
como vcs fazem nesse caso igual o meu

tenho um simples dataTable, que em cada registro é gerado um botao de excluir ao lado…

[code]
public String excluirRegistroLista() throws PersistenceException{

	pessoaFacade.excluirRegistroLista(pessoaSelecionada);
		
	return  "reloadLista";

}[/code]

o método excluir funciona normalmente, ele exclui o objeto e atualiza o dataTable para o registro sumir…
so pq quando ele da o return (reloadLista) que chama a mesma pagina…
aconte isso

java.lang.IllegalStateException: duplicate Id for a component j_id_jsp_1450790503_1:col:j_id1 at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:68) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:92) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:92) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:78) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:92) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:92) at org.ajax4jsf.application.TreeStructureNode.apply(TreeStructureNode.java:92) at org.ajax4jsf.application.AjaxStateManager.getTreeStructureToSave(AjaxStateManager.java:187) at org.ajax4jsf.application.AjaxStateManager.buildViewState(AjaxStateManager.java:473) at org.ajax4jsf.application.AjaxStateManager.saveView(AjaxStateManager.java:437) at com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.flushToWriter(ViewHandlerImpl.java:930) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:205) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 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:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)

como resolver isso?
ha outro jeito de da reload no dataTable ?

Poderia postar o código da sua JSP?

[code]
<%@taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<%@taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%>
<%@taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c”%>
<%@taglib uri=“http://richfaces.org/rich” prefix=“rich”%>
<%@page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

Insert title here

						<f:facet name="header">
							 <rich:columnGroup>  
								<rich:column>  
			                   		 <b><h:outputText styleClass="headerText" value="NOME" /></b>
			   	                </rich:column>  				            
			                    <rich:column>  
			                   		 <b><h:outputText styleClass="headerText" value="CACHORRO" /></b>				                   		
			                    </rich:column>  	
			                    <rich:column>  
			                   		 <b><h:outputText styleClass="headerText" value="RAÇÃO" /></b>				                   		
			                    </rich:column>  	
			                   	<rich:column>  
			                   		 <b><h:outputText styleClass="headerText" value="AÇÃO" /></b>				                   		
			                    </rich:column>  		                  
			                 </rich:columnGroup>
			            </f:facet>
								   																			
						<rich:subTable value = "#{pessoa.racaoCachorro}" var= "subObjeto"> 
				   			<rich:columnGroup>  
					   			<rich:column> 
									<h:outputText value="#{pessoa.nome}" />
								</rich:column>			
								
								<rich:column> 
									<h:outputText value="#{pessoa.cachorroPessoa.nomeCachorro}" />
								</rich:column>	
					   			
					   			<rich:column>			 	
						   			<h:outputText value="#{subObjeto.nomeRacao}" />
						   		</rich:column>	
						   		
						   		<rich:column>			 	
						   			<a4j:commandButton value = 'X' action="#{pessoaBean.excluirRegistroLista}"/>
						   			<a4j:commandButton value = '-' action="#{pessoaBean.editRegistro}"/>
						   		</rich:column>	
					   		</rich:columnGroup>
			   			</rich:subTable>
			   							   						
					</rich:dataTable>
			</a4j:outputPanel>
			<br>
			<hr>
		<a4j:commandButton value="Novo" action="#{pessoaBean.novaPessoa}" />
		</center>
	</a4j:form>
</f:view>
[/code]

Tente isso:

//Mude a declaração do outputPanel
<a4j:outputPanel ajaxRendered="true" id="painelPrincipal">

//E adicione o reRender no commandButton 
<a4j:commandButton value = 'X' action="#{pessoaBean.excluirRegistroLista}" reRender="painelPrincipal"/>  

[]´s

Daniel

javax.servlet.ServletException: duplicate Id for a component j_id_jsp_1450790503_1:col:j_id1
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
	com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)

nao foi
=|

Bom, você pode mudar o commandLink para JSF puro, dai você garante a recarga da página.
Assim:

<h:commandButton value = 'X' action="#{pessoaBean.excluirRegistroLista}"/> 

[]´s

Daniel

nada cara
mudei todos a4j para h, inclusive o form
mais nao foi
nao entendo, pode ter alguma coisa a ver com a lista do dataTable?

troca seu datatable pelo rich:scrolldatatable e tira o rich:datascroller porque voce nao vai mais precisar dele. :slight_smile: não precisa colocar mais os ids … só se você precisar .

ops me precipitei falei besteira…esqueci que o componente era diferente.

mais faz o seguinite no seu metodo richscroller coloca um id, e coloca um page="{bean}"

Fala Deluxe blz?
Cara tivemos problemas parecido por aqui, a solução foi colocar id em todos os componentes, no começo é chato mas depois vira hábito :lol:

Abraços!

nao conseguir ainda
oq seria esse bean no datascroller ?

Srs, sei que o post é meio antigo, mas recentemente tive o mesmo problema, que me atormentou bastante, e acredito ter achado a resposta.

O problema é com o uso do “binding”. Isso mesmo!! O “binding” que está sendo utilizado para recuperar o objeto Java do componente “rich:dataTable”.

Não sei o porquê exatamente, mas quando guardamos o objeto do componente em sessão utilizando o binding (meu caso), a implementação do JSF se perde com o contador de IDs únicos dos componentes. Acredito que, ao tentar reconstruir a árvore de componentes, o nosso objeto guardado em sessão pelo binding atrapalha os contadores de IDs ou não é considerado por este.

Experimente retirar o atributo binding do objeto rich:dataTable. Acho que vai funcionar!..