Bom dia,
Estou recebendo essa mensagem de erro:
[java.lang.IllegalStateException: A ID de componente frmConsultaContratos:resultContratos:j_idt80 já foi encontrada na visualização.
No caso em questão, possuo uma tela para criar um novo registro, e outra para edição. Caso eu chame a tela de edição primeiro, e depois eu venha chamar a tela de criação, o erro é gerado.
create.xhtml
<ui:composition template="/pages/templates/template.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:p="http://primefaces.org/ui">
<ui:define name="content">
<p:panel header="#{bundle.header_cadastro_matricula}">
<h:form id="form">
<p:panelGrid columns="2">
<ui:include src="form.xhtml" />
</p:panelGrid>
<br/>
<p:panelGrid columns="2">
<p:commandButton id="btnSalvar" action="#{matriculaBean.save}" value="#{bundle.btnSalvar}" ajax="false" icon="save"/>
<p:commandButton id="btnVoltar" action="#{matriculaBean.list}" value="#{bundle.btnCancelar}" ajax="false" immediate="true" icon="cancel"/>
</p:panelGrid>
</h:form>
</p:panel>
<ui:include src="consultaContrato.xhtml"/>
</ui:define>
</ui:composition>
edit.xhtml
<ui:composition template="/pages/templates/template.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:p="http://primefaces.org/ui">
<ui:define name="content">
<p:panel header="#{bundle.header_edicao_matricula}">
<h:form id="form">
<p:panelGrid columns="2">
<ui:include src="form.xhtml" />
</p:panelGrid>
<br/>
<p:panelGrid columns="2">
<p:commandButton id="btnAtualizar" action="#{matriculaBean.update}" value="#{bundle.btnAtualizar}" ajax="false" icon="update"/>
<p:commandButton id="btnVoltar" action="#{matriculaBean.list}" value="#{bundle.btnCancelar}" ajax="false" immediate="true" icon="cancel"/>
</p:panelGrid>
</h:form>
</p:panel>
<ui:include src="consultaContrato.xhtml"/>
</ui:define>
</ui:composition>
O componente que ele reclama é esse:
consultaContrato.xhtml
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:comp="http://java.sun.com/jsf/composite/componentes"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<p:dialog widgetVar="consultaContrato" header="#{bundle.consultarContratos}" height="500" width="400">
<h:form id="frmConsultaContratos">
<p:panel header="#{bundle.header_search_contrato}" >
<h:outputText value="#{bundle.tipoBusca}" />
<p:selectOneRadio id="tipoBuscaContrato" value="#{matriculaBean.tipoBuscaContrato}">
<f:selectItem itemValue="todos" itemLabel="Todos"/>
<f:selectItem itemValue="id" itemLabel="Código"/>
<f:selectItem itemValue="cpf" itemLabel="CPF"/>
</p:selectOneRadio>
<p:outputLabel for="searchContrato" value="#{bundle.search}" /><p:spacer/>
<p:inputText id="searchContrato" value="#{matriculaBean.thermSearchContrato}" /><p:spacer/>
<p:commandButton id="btnSearchContrato" value="#{bundle.btnSearch}" update="resultContratos" icon="search"/>
</p:panel>
<p:dataTable
id="resultContratos"
var="row"
value="#{matriculaBean.listContratos}"
binding="#{matriculaBean.dataTableContratos}"
paginator="true"
paginatorPosition="bottom"
rowsPerPageTemplate="5,10" >
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.codigo}" />
</f:facet>
<h:outputText value="#{row.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.cpf}" />
</f:facet>
<h:outputText value="#{row.cpf}" />
</p:column>
<p:column style="width:32px">
<p:commandButton id="btnSelecionarContrato" value="selecionar" update=":form" icon="add">
<f:setPropertyActionListener value="#{row}" target="#{matriculaBean.matricula.contrato}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
</ui:composition>
Desde já agradeço.
Essa é facil… existem 2 ou mais componentes com o mesmo id, troca o id que funciona ok?
1 curtida
Cara coloque o form.xhtml no post também, fica mais tranquilo pra te ajudar. Já adiantando você deve estar repetindo o id de um componente em algum lugar da sua view ou a árvore de componentes não foi recriada.
1 curtida
Segue o form.xhtml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<ui:composition 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:p="http://primefaces.org/ui">
<p:outputLabel for="buscaContrato" value="#{bundle.buscaContrato}" />
<p:commandButton id="buscaContrato" value="#{bundle.btnSearch}" onclick="consultaContrato.show();" type="button" icon="search"/>
<p:outputLabel for="contrato" value="#{bundle.contrato}" />
<p:selectOneMenu id="contrato" value="#{matriculaBean.matricula.contrato.id}" requiredMessage="#{bundle.contrato_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.contratos}" />
</p:selectOneMenu>
<p:outputLabel for="aluno" value="#{bundle.aluno}" />
<p:selectOneMenu id="aluno" value="#{matriculaBean.matricula.aluno.id}" requiredMessage="#{bundle.aluno_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.alunos}" />
</p:selectOneMenu>
<p:outputLabel for="turma" value="#{bundle.turma}" />
<p:selectOneMenu id="turma" value="#{matriculaBean.matricula.turma.id}" requiredMessage="#{bundle.turma_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.turmas}" />
</p:selectOneMenu>
<p:outputLabel for="dataMatricula" value="#{bundle.dataMatricula}" />
<p:calendar id="dataMatricula" value="#{matriculaBean.matricula.dataMatricula}" pattern="dd/MM/yyyy" showButtonPanel="true" navigator="true" requiredMessage="#{bundle.dataMatricula_required}" required="true" style="width:70px;">
<f:convertDateTime pattern="dd/MM/yyyy" locale="pt_br" timeZone="America/Sao_Paulo" />
</p:calendar>
<p:outputLabel for="isencaoTaxa" value="#{bundle.isencaoTaxa}" />
<p:selectOneMenu id="isencaoTaxa" value="#{matriculaBean.matricula.isencaoTaxa}" requiredMessage="#{bundle.isencaoTaxa_required}" required="true" style="width:100px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItem itemValue="I" itemLabel="Isento" />
<f:selectItem itemValue="N" itemLabel="Não Isento" />
<p:ajax update="valorTaxa"></p:ajax>
<p:ajax update="recebimentoTaxa"></p:ajax>
</p:selectOneMenu>
<p:outputLabel for="valorTaxa" value="#{bundle.valorTaxa}" />
<p:inputText id="valorTaxa" value="#{matriculaBean.matricula.valorTaxa}" requiredMessage="#{bundle.valorTaxa_required}" required="#{matriculaBean.valorTaxaRequerida}" styleClass="dinheiro" >
<f:convertNumber type="currency" pattern="#0.00"/>
</p:inputText>
<p:outputLabel for="recebimentoTaxa" value="#{bundle.recebimentoTaxa}" />
<p:selectOneMenu id="recebimentoTaxa" value="#{matriculaBean.matricula.recebimentoTaxa}" requiredMessage="#{bundle.recebimentoTaxa_required}" required="#{matriculaBean.valorTaxaRequerida}" style="width:100px;">
<f:selectItem itemValue="N" itemLabel="Selecione" />
<f:selectItem itemValue="R" itemLabel="Recebido" />
<f:selectItem itemValue="N" itemLabel="Não Recebido" />
<p:ajax update="dataRecebimento"></p:ajax>
</p:selectOneMenu>
<p:outputLabel for="dataRecebimento" value="#{bundle.dataRecebimento}" />
<p:calendar id="dataRecebimento" value="#{matriculaBean.matricula.dataRecebimento}" pattern="dd/MM/yyyy" showButtonPanel="true" navigator="true" requiredMessage="#{bundle.dataRecebimento_required}" required="#{matriculaBean.dataRecebimentoTaxaRequerida}" style="width:70px;">
<f:convertDateTime pattern="dd/MM/yyyy" locale="pt_br" timeZone="America/Sao_Paulo" />
</p:calendar>
</ui:composition>
Obrigado pela ajuda.
[quote=robinsonbsilva]Segue o form.xhtml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<ui:composition 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:p="http://primefaces.org/ui">
<p:outputLabel for="buscaContrato" value="#{bundle.buscaContrato}" />
<p:commandButton id="buscaContrato" value="#{bundle.btnSearch}" onclick="consultaContrato.show();" type="button" icon="search"/>
<p:outputLabel for="contrato" value="#{bundle.contrato}" />
<p:selectOneMenu id="contrato" value="#{matriculaBean.matricula.contrato.id}" requiredMessage="#{bundle.contrato_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.contratos}" />
</p:selectOneMenu>
<p:outputLabel for="aluno" value="#{bundle.aluno}" />
<p:selectOneMenu id="aluno" value="#{matriculaBean.matricula.aluno.id}" requiredMessage="#{bundle.aluno_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.alunos}" />
</p:selectOneMenu>
<p:outputLabel for="turma" value="#{bundle.turma}" />
<p:selectOneMenu id="turma" value="#{matriculaBean.matricula.turma.id}" requiredMessage="#{bundle.turma_required}" required="true" style="width:300px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItems value="#{matriculaBean.turmas}" />
</p:selectOneMenu>
<p:outputLabel for="dataMatricula" value="#{bundle.dataMatricula}" />
<p:calendar id="dataMatricula" value="#{matriculaBean.matricula.dataMatricula}" pattern="dd/MM/yyyy" showButtonPanel="true" navigator="true" requiredMessage="#{bundle.dataMatricula_required}" required="true" style="width:70px;">
<f:convertDateTime pattern="dd/MM/yyyy" locale="pt_br" timeZone="America/Sao_Paulo" />
</p:calendar>
<p:outputLabel for="isencaoTaxa" value="#{bundle.isencaoTaxa}" />
<p:selectOneMenu id="isencaoTaxa" value="#{matriculaBean.matricula.isencaoTaxa}" requiredMessage="#{bundle.isencaoTaxa_required}" required="true" style="width:100px;">
<f:selectItem itemValue="" itemLabel="Selecione" />
<f:selectItem itemValue="I" itemLabel="Isento" />
<f:selectItem itemValue="N" itemLabel="Não Isento" />
<p:ajax update="valorTaxa"></p:ajax>
<p:ajax update="recebimentoTaxa"></p:ajax>
</p:selectOneMenu>
<p:outputLabel for="valorTaxa" value="#{bundle.valorTaxa}" />
<p:inputText id="valorTaxa" value="#{matriculaBean.matricula.valorTaxa}" requiredMessage="#{bundle.valorTaxa_required}" required="#{matriculaBean.valorTaxaRequerida}" styleClass="dinheiro" >
<f:convertNumber type="currency" pattern="#0.00"/>
</p:inputText>
<p:outputLabel for="recebimentoTaxa" value="#{bundle.recebimentoTaxa}" />
<p:selectOneMenu id="recebimentoTaxa" value="#{matriculaBean.matricula.recebimentoTaxa}" requiredMessage="#{bundle.recebimentoTaxa_required}" required="#{matriculaBean.valorTaxaRequerida}" style="width:100px;">
<f:selectItem itemValue="N" itemLabel="Selecione" />
<f:selectItem itemValue="R" itemLabel="Recebido" />
<f:selectItem itemValue="N" itemLabel="Não Recebido" />
<p:ajax update="dataRecebimento"></p:ajax>
</p:selectOneMenu>
<p:outputLabel for="dataRecebimento" value="#{bundle.dataRecebimento}" />
<p:calendar id="dataRecebimento" value="#{matriculaBean.matricula.dataRecebimento}" pattern="dd/MM/yyyy" showButtonPanel="true" navigator="true" requiredMessage="#{bundle.dataRecebimento_required}" required="#{matriculaBean.dataRecebimentoTaxaRequerida}" style="width:70px;">
<f:convertDateTime pattern="dd/MM/yyyy" locale="pt_br" timeZone="America/Sao_Paulo" />
</p:calendar>
</ui:composition>
Obrigado pela ajuda.[/quote]
quando ele disse para vc postar o form… acredito que ele dizia para vc postar, aonde vc esta fazendo o <ui:include/> destes composition…
Bom dia, pior que eu não havia entendido desta forma!!
Acima tem todas paginas relacionadas, só não postei o template.xhtml
Valeu pela ajuda.
se voce alterar na tela de consultaContrato.xhtml esse trecho …
<p:dataTable
id="resultContratos"
para algo do genero
<p:dataTable
id="resultadoContratos"
o erro para de ser registrado?
Continua dando o erro.
javax.servlet.ServletException: A ID de componente frmConsultaContratos:resultoContratos:j_idt83 j� foi encontrada na visualiza��o.
Será que tem como eu limpar a arvore de componentes referente a uma tela?
Como esse dialog é chamado tanto pela tela de criação como pela tela de edição, será que quando alterno entre essas telas, esse dialog fica “cacheado” ou algo do tipo??
no form frmConsultaContratos coloca prependId=“false” e me diz o que acontece…
então… vc costuma dar o clean no servidor sempre que da stop nele? ou ctrl f5 na tela? pode ser cache… tem algo muito errado só em alterar o nome já deveria funcionar
usando o prependId também da o erro.
olhei aqui e vi que tanto na tela de create e edit vc faz o include desse form…
se vc remover no edit.xhtml o trecho <ui:include src=“consultaContrato.xhtml”/> ele vai funcionar?
outra coisa que quero saber ambas as telas create.xhtml e edit.xhtml estão na mesma tela? ou sao paginas separadas?
Então, removendo de alguma delas funciona normal, só o “dialog” não aparece na “pagina onde removi”.
As páginas são unicas, ou seja, uma para cada operação, a unica coisa em comum entre elas é que ambas usam o “form.xhtml” e tem o include do dialog.
e se vc mover o include para o xhtml pai? assim vc poderia chamar em ambas as telas…
o problema é esse… vc ta colocando o mesmo componente 2 vezes na mesma visualização, então vc deve mover esse dialog para um html comum entre eles… ou criar um xhtml intermediario e colocar só ele… isso já resolveria o problema… pois ambas as telas chamaram o mesmo componente de forma sepada, invez de chamar ele apenas uma vez…
o form.xhtml é quem chama o create.xhtml e o edit.xhtml? se for ele coloca o <ui:include src=“consultaContrato.xhtml”/> nele…