Facelets duplicando o id dos componentes

Olá galera,

estou com um problema na utilização do facelets, crei o template com o código abaixo:

    <h:body style="margin: 0px;">
        <ui:insert  name="topo">
            <div class="divTopo">
                <p:panel>

                    <div class="divTopoUsuario">
                        #{loginMB.usuario.nome}
                    </div>

                </p:panel>

            </div>
        </ui:insert>
        <div class="divMenu">
            <ui:insert name="menu">
                <p:menu style="width: 200px;" model="#{loginMB.usuario.menu.model}"></p:menu>
            </ui:insert>
        </div>

        <div class="divConteudo">
            <ui:insert name="conteudo">

            </ui:insert>
        </div>
     
    </h:body>

e utilizo o template na view abaixo:

 <ui:composition template="template.xhtml">

        <ui:define name="conteudo">
            
                <p:panel header="Cadastro de Cidades" >
                    <h:panelGrid columns="2">
                        <h:form>
                            
                        </h:form>
                    </h:panelGrid>
                        
                </p:panel>
            
        </ui:define>

    </ui:composition>

ai quando eu insiro algum componete como um h:form ou h:panelgrid ele recebe o ID de um componente do template ai acontece o seguinte erro:

java.lang.IllegalStateException: A ID de componente j_id3 já foi encontrada na visualização.
Alguém já passou por isso?

Estou com esse mesmo problema, quem souber a solução por favor nos ajude.

1 curtida

cara, para resolver isso eu insiro um id em todos os meus componentes.

Pode ocorrer também de se ter duplicado um campo ID manualmente, por exemplo copiando um componente <h:inputText> para um outro lugar e esquecer de trocar o ID, fazendo com que dois componentes tenham o mesmo ID.

Ocorreu comigo uma vez e descobri após olhar minuciosamente para as tags do meu código (tanto para os componentes JSF como tags html).

Importante checar se o template, caso esteja utilizando um, não está sendo referenciado na seção de namespace da página que está sendo incluída.

Tive o mesmo problema e o tópico me ajudou muito! Valeu crowlercage!