JSF 2 - Cannot find component with identifier "xxx"

Prezados,

Estou tentando atualizar um input com o id nome_empregado, porém o JSF apresenta a mensagem dizendo que não encontrou o componente com este identificador. Inspecionei o código com o firebug e o id do componente é exatamente este que estou usando :shock:

<p:dataTable id="table_empregados" var="empregado"
					value="#{empregadoBean.lazyModel}" paginator="true"
					rows="5"
					paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
					rowsPerPageTemplate="5,10,15" 
					selectionMode="single" selection="#{empregadoBean.empregadoSelecionado}">
			
					<p:ajax event="rowSelect" listener="#{empregadoBean.onRowSelect}" update="nome_empregado" /> 

</p:dataTable>
			</p:fieldset>

			<br />

			<p:fieldset legend="Empregado">
				<h:panelGrid columns="8" cellpadding="2">
					<h:outputText value="Nome:" />
					<p:inputText id="nome_empregado"
						value="#{empregadoBean.empregadoSelecionado.nome}"
						disabled="true" style="width: 220px;" />
...

Alguém tem idéia do que possa ser?

Obrigado?

No código que você postou não existe nenhum componente “nome_empregado”.

OK. Editei o post e atualizei o código :wink:

Faz um teste, coloca isso aqui para false: disabled=“true”
Caso não funcione, tente colocar seu form com prependId=“false”

[quote=jakefrog]Faz um teste, coloca isso aqui para false: disabled=“true”
Caso não funcione, tente colocar seu form com prependId=“false”[/quote]

Olá jakefrog,

O meu formulário já até estava com a propriedade prependId=“false”. Testei também com o campo como disable=“false”, mas continua o mesmo problema.

Muito esquisito isso… rsrsrsrsrs

Tenta colocar o h:inputText e sem o disabled.

Realizei o teste sugerido e também não funcionou. Acredito não ser um problema relaciona ao campo específico, pois testei com outros componentes da página e sempre ocorre o mesmo problema.

Será que você não está com um <h:form> dentro de outro?

Ou seu dataTable está dentro de algum outro componente tipo <h:panelGroup>?

Acredito que seu problema seja o panelGrid, por causa dele o seu inputText fica dentro de uma iteração, então ele não ficará com o id “nome_empregado”, mas estará algo como “1:nome_empregado”.

Se você quer atualizar apenas um campo, terá que referenciar qual deles, dentro da iteração. Se quiser atualizar todos, atualize o dataGrid.

Olás,

Meu dataTable estava apenas dentro de um fieldSet. Então comentei este fieldSet e também não funcionou.

Outro teste realizado: coloquei o input fora do panelGrid, mas ocorreu a mesma coisa…

Engraçado que na net tem uma pancada de gente com mesmo problema, mas pouca soluções foram postadas… Muita gente relatou o problema, porém não obtiveram resposta.

Galera,

Problema “parcialmente” resolvido. Seguinte, tive de adicionar na propriedade update da tag <p:ajax> o id do form na frente do id do input a ser atualizado, ficando assim:

 <p:ajax event="rowSelect" listener="#{empregadoBean.onRowSelect}" update=":frm_cadastro_empregado:nome_empregado" />  

O erro parou, porém ainda não atualiza o conteúdo do input com o nome do empregado selecionado na tabela.

[quote=blastec]Galera,

Problema “parcialmente” resolvido. Seguinte, tive de adicionar na propriedade update da tag <p:ajax> o id do form na frente do id do input a ser atualizado, ficando assim:

 <p:ajax event="rowSelect" listener="#{empregadoBean.onRowSelect}" update=":frm_cadastro_empregado:nome_empregado" />  

O erro parou, porém ainda não atualiza o conteúdo do input com o nome do empregado selecionado na tabela.

[/quote]

Debugando, percebi que quando a linha é selecionada, o método set de empregadoSelecionado não é chamado.