[RESOLVIDO] Problemas com update (primefaces)

6 respostas
J

Boa noite pessoal,

Estou com um problema ao tentar dar update em um componente.

XHTML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
<p:fieldset legend="Cadastro de categorias" >
	<h:outputText value="Descrição: " />
	<h:inputText value="#{beanCategoria.categoria.descricao}" id="desc"/>
	<p:commandButton value="Salvar" action="#{beanCategoria.adicionar}" update="listaCategorias"/>
</p:fieldset>
<br />
<p:fieldset legend="Categorias cadastradas" >
	<p:dataTable var="cat" value="#{beanCategoria.categorias}" id="listaCategorias" rowKey="#{cat.id}" selectionMode="single"
		 selection="#{beanCategoria.categoria}" filteredValue="#{tableBean.filteredCategorias}" >
		
		<p:ajax event="rowSelect" update="desc"/>
		
		<f:facet name="header">  
            Lista de Categorias 
        </f:facet>
        
        <p:column headerText="Cód." id="id" sortBy="#{cat.id}"
			filterBy="#{cat.id}" >  
            <h:outputText value="#{cat.id}" />
        </p:column>
        <p:column headerText="Descrição" id="descricao" sortBy="#{cat.descricao}"
			filterBy="#{cat.descricao}" >  
            <h:outputText value="#{cat.descricao}" />
        </p:column>
        
	</p:dataTable>
</p:fieldset>
</html>
Erro:
Ago 26, 2012 8:34:12 PM com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit
Grave: javax.faces.FacesException: Cannot find component with identifier "desc" referenced from "listaCategorias".

Então estou dizendo que quero dar o update no componente com id "desc", porém ele interpreta como "listaCategorias:desc", alguém sabe como eu "digo" que é o "desc" que eu quero, não o "listaCategorias:desc"?

Desde já agradeço a atenção de todos.

6 Respostas

E

Tente assim:

<p:ajax event="rowSelect" update=":desc"/>
J

[quote=ErickRAR]Tente assim:

<p:ajax event="rowSelect" update=":desc"/>

Tentei mas sem sucesso.
Alguém tem mais alguma ideia?

J

Fiz umas alterações no meu código, porém continuo com o mesmo problema.

XHTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">

<p:fieldset legend="Categorias cadastradas">
<h:form prependId="false">
	<p:commandButton actionListener="#{beanCategoria.prepararNovo}"
				value="Nova categoria!" oncomplete="dialogCadCat.show()" update=":infosCat"/>
	<p:dataTable var="cat" value="#{beanCategoria.listarCategorias}"
		id="listaCategorias" rowKey="#{cat.id}"
		filteredValue="#{tableBean.filteredCategorias}">

		<f:facet name="header">  
            Lista de Categorias 
        </f:facet>

		<p:column headerText="Cód." id="id" sortBy="#{cat.id}"
			filterBy="#{cat.id}">
			<h:outputText value="#{cat.id}" />
		</p:column>
		<p:column headerText="Descrição" id="descricao"
			sortBy="#{cat.descricao}" filterBy="#{cat.descricao}">
			<h:outputText value="#{cat.descricao}" />
		</p:column>

		<p:column>
			<f:facet name="header">
				<h:outputText value="Alterar" />
			</f:facet>
			<p:commandButton actionListener="#{beanCategoria.prepararAlterar}"
				value="Alterar" oncomplete="dialogCadCat.show()" />
		</p:column>

		<p:column>
			<f:facet name="header">
				<h:outputText value="Excluir" />
			</f:facet>
			<p:commandButton action="#{beanCategoria.excluir}"
				value="Excluir"/>
		</p:column>

	</p:dataTable>
	</h:form>
</p:fieldset>

<p:dialog header="Cadastro de Categorias" widgetVar="dialogCadCat"
	resizable="false" modal="true" showEffect="fade" hideEffect="fade">
	<h:form prependId="false">
		<h:panelGrid id="infosCat" columns="2" style="margin-bottom:10px">

			<h:outputLabel for="id" value="Cód.:" />
			<h:outputLabel id="id" value="#{beanCategoria.categoria.id}" />

			<h:outputLabel for="descricao" value="Descrição:" />
			<h:inputText id="descricao"
				value="#{beanCategoria.categoria.descricao}" />

			<p:commandButton 
				oncomplete="dialogCadCat.hide();"
				actionListener="#{beanCategoria.adicionar}" value="Inserir Livro" />
			<p:commandButton 
				oncomplete="dialogCadCat.hide();"
				actionListener="#{beanCategoria.alterar}" value="Alterar Livro" />

		</h:panelGrid>
	</h:form>
</p:dialog>

</html>
No código fonte gerado em HTML:
<table id="infosCat" style="margin-bottom:10px">
Erro:
Ago 26, 2012 10:46:36 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
Grave: Error Rendering View[/index.xhtml]
javax.faces.FacesException: Cannot find component with identifier ":infosCat" referenced from "j_idt101".
	at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:251)
	at org.primefaces.util.AjaxRequestBuilder.addIds(AjaxRequestBuilder.java:102)
	at org.primefaces.util.AjaxRequestBuilder.update(AjaxRequestBuilder.java:90)
	at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:195)
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:74)
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:49)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:89)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:71)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:45)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:192)
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:115)
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Ago 26, 2012 10:46:36 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/Skyzz] threw exception [Cannot find component with identifier ":infosCat" referenced from "j_idt101".] with root cause
javax.faces.FacesException: Cannot find component with identifier ":infosCat" referenced from "j_idt101".
	at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:251)
	at org.primefaces.util.AjaxRequestBuilder.addIds(AjaxRequestBuilder.java:102)
	at org.primefaces.util.AjaxRequestBuilder.update(AjaxRequestBuilder.java:90)
	at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:195)
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:74)
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:49)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:89)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:71)
	at org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:45)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:192)
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:115)
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
E

Coloque tudo em um form só, ou então coloque id’s nos forms e tente algo tipo:

update=":form2:infosCat"
J

[quote=ErickRAR]Coloque tudo em um form só, ou então coloque id’s nos forms e tente algo tipo:

update=":form2:infosCat"

Ok, vou tentar hoje a noite quando voltar para casa, assim que eu testar posto o resultado!

Muito obrigado.

J

Consegui resolver, realmente eu estava colocando o ID errado.

Vlw cara!!!

Criado 26 de agosto de 2012
Ultima resposta 31 de ago. de 2012
Respostas 6
Participantes 2