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 ?
//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"/>
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)
troca seu datatable pelo rich:scrolldatatable e tira o rich:datascroller porque voce nao vai mais precisar dele. não precisa colocar mais os ids … só se você precisar .
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:
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!..