Component ID form:j_id96 has already been found in the view.
Duplicate component ID form:j_id96 found in view
A tela de um sistema que estou trabalhando começou a apresentar um erro de componente com ID duplicado. Estou utilizando JSF com Tomahawk e o código que estava apresentando problema era referente à paginação, utilizando a TAG t:dataScroller
, conforme o trecho de código abaixo:
... <h:panelGroup rendered="#{not empty lista}"> <div class="paginacao"> <t:dataScroller id="#{id}" for="#{idTabela}" paginator="true" binding="#{binding}" renderFacetsIfSinglePage="false" paginatorRenderLinkForActive="false"> <f:facet name="first">Primeira</f:facet> <f:facet name="previous">Anterior</f:facet> <f:facet name="next">Próxima</f:facet> <f:facet name="last">Última</f:facet> </t:dataScroller> </div> </h:panelGroup> ...
A mensagem da exceção é muito clara, existe mais de um componente definido com o mesmo atributo ID. O problema é que eu não estou definindo IDs para os elementos que estão apresentando problema, portando, a geração de IDs está sendo automática, de forma dinâmica, pelo próprio JSF/Tomahawk.
Segue a exceção:
Mai 25, 2012 11:33:55 AM com.sun.faces.application.StateManagerImpl checkIdUniqueness Grave: JSF1007: Duplicate component ID form:j_id96 found in view. Mai 25, 2012 11:33:55 AM com.sun.facelets.FaceletViewHandler handleRenderException Grave: Error Rendering View[/pages/****.xhtml] java.lang.IllegalStateException: Component ID form:j_id96 has already been found in the view. See below for details. ... +id: j_id94 type: com.sun.facelets.tag.ui.ComponentRef@16ccb83 +id: j_id95 type: javax.faces.component.html.HtmlPanelGroup@1a53666 +id: j_id96 type: <div class="paginacao"> +id: idPaginadorServidores type: br.gov.dataprev.sisage.web.component.html.HtmlDataScroller@1969398 +id: j_id96 type: Última +id: j_id94 type: Anterior +id: j_id93 type: Primeira +id: j_id95 type: Próxima +id: j_id97 type: </div> ...
Para resolver esse problema, bastou eu adicionar a TAG h:outputText
nos valores dos facets do componente dataScroller. Não sei muito bem o motivo de essa alteração resolver o problema, mas, no meu caso, solucionou – via tentativa-e-erro.
Veja como ficou o código mostrado anteriormente:
... <h:panelGroup rendered="#{not empty lista}"> <div class="paginacao"> <t:dataScroller id="#{id}" for="#{idTabela}" paginator="true" binding="#{binding}" renderFacetsIfSinglePage="false" paginatorRenderLinkForActive="false"> <f:facet name="first" id="first"> <h:outputText id="#{id}primeira" value="Primeira"/></f:facet> <f:facet name="previous" id="previous"><h:outputText id="#{id}anterior" value="Anterior"/></f:facet> <f:facet name="next" id="next"><h:outputText id="#{id}proxima" value="Próxima"/></f:facet> <f:facet name="last" id="last"><h:outputText id="#{id}ultima" value="Última"/></f:facet> </t:dataScroller> </div> </h:panelGroup> ...
Encontrei algumas pessoas relatando esse mesmo erro, mas referente a inclusão de um elemento do JSF que já foi criado anteriormente, para esses casos, a solução pode estar relacionada com o escopo do bean, mas essa é outra situação.
Se alguém souber o motivo ou tiver alguma outra solução, favor compartilhar.
Boa sorte.
19 Replies to “Component ID form:j_id96 has already been found in the view.”
Ocorreu novamente o mesmo erro, sendo que agora em uma tag
t:column
. O problema estava que a subtagf:facet
estava com o valor “solto”, sem nenhuma tagh:outputText
, assim:<f:facet name="header">Descrição</f:facet>
Incluí o
h:outputText
e funcionou, ficando assim:<f:facet name="header"><h:outputText value="Detalhar"/></f:facet>
Acheter Cialis Par Cheque
Kamagra Oral Jelly Legal
Compra Kamagra En Espana
viagra moa
Viagra Online Rezeptfrei
finasteride tablets for sale
Stromectol
online generic cialis
Dutasteride Website
cialis prices
cialis and viagra sales
accutane online buy
Kamagra Criticas
Cheap Tadacip From Holland canada oil kamagra chewable Hydrochlorothiazide Mastercard Accepted By Money Order
Cialis Comprar Sevilla aerogserak prix pharmacie acheter levitra en ligne
prednisolone dosage for croup Fmvizq Present studies have lasted less than years so longterm benefits are unknown.
Levitra Modo De Usar Plaquenil comprar cialis espana contrareembolso
buying cialis online usa Instead of going the same way, he took a detour around the Qiantang River, and accidentally found a place called Bagua Tian, which was quite interesting