Converte está retornando o ID quando deveria retorna o nome

3 respostas
java
JavaX_JavaX

Boa tarde!

pessoal, meu problema e o seguinte tenho uma tela de cadastro e outra de consulta.

a tela consulta é uma dataTable simples com os nomes e na frente de cada nome o botão excluir e editar.

quando clico no botão editar, retorno para a tela cadastro.

até ai OK.

O prolema é que no campo nome: onde deveria estar o nome do usuário está retornando o ID

segue abaixo o formulário onde está dando errado.

<p:outputLabel value="Nome" for="nome" />
	    <p:autoComplete id="nome" size="60"
		value="#{cadastroFuncionarioBean.funcionario.pessoa}" 
		completeMethod="#{cadastroFuncionarioBean.pesquisarNomes}"
	var="pessoa" itemValue="#{pessoa}" itemLabel="#{pessoa.nome}" />

e o meu converte que acredito estar certo

package br.com.util;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import br.com.model.Pessoa;
import br.com.repository.Pessoas;

@FacesConverter(forClass = Pessoa.class)
public class PessoaConverter implements Converter {
	@Inject // funciona graças ao OmniFaces
	private Pessoas pessoas;

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		Pessoa retorno = null;
		if (value != null && !"".equals(value)) {
			System.out.println("Teste Coverte getAsObject Pessoa = "+value);
			retorno = this.pessoas.porId(new Long(value));
		}
		return retorno;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if (value != null && !"".equals(value)) {
			System.out.println("Teste Coverte getAsString Pessoa = "+value);
			return ((Pessoa) value).getId().toString();
		}
		return null;
	}
}

da o seguinte erro na hora de usar o auto complete

Teste Coverte getAsString Pessoa = Nome Nome Nome Nome

dez 07, 2016 10:27:36 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException

GRAVE: Error Rendering View[/CadastroFuncionario.xhtml]

java.lang.ClassCastException: java.lang.String cannot be cast to br.com.amarildo.model.Pessoa

at br.com.amarildo.util.PessoaConverter.getAsString(PessoaConverter.java:31)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSuggestionsAsList(AutoCompleteRenderer.java:498)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSuggestions(AutoCompleteRenderer.java:393)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeResults(AutoCompleteRenderer.java:123)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeEnd(AutoCompleteRenderer.java:105)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)

at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:582)

at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1689)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIForm.visitTree(UIForm.java:371)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)

at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:322)

at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)

at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)

at org.omnifaces.context.OmniPartialViewContext.processPartial(OmniPartialViewContext.java:139)

at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)

at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430)

at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)

at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)

at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at br.com.amarildo.util.AutorizacaoFilter.doFilter(AutorizacaoFilter.java:35)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)
dez 07, 2016 10:27:36 AM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError

GRAVE: java.lang.ClassCastException: java.lang.String cannot be cast to br.com.amarildo.model.Pessoa

at br.com.amarildo.util.PessoaConverter.getAsString(PessoaConverter.java:31)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSuggestionsAsList(AutoCompleteRenderer.java:498)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSuggestions(AutoCompleteRenderer.java:393)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeResults(AutoCompleteRenderer.java:123)

at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeEnd(AutoCompleteRenderer.java:105)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)

at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:582)

at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1689)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIForm.visitTree(UIForm.java:371)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)

at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)

at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:322)

at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)

at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)

at org.omnifaces.context.OmniPartialViewContext.processPartial(OmniPartialViewContext.java:139)

at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)

at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430)

at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)

at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)

at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at br.com.amarildo.util.AutorizacaoFilter.doFilter(AutorizacaoFilter.java:35)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

caso alguém poder me da uma força fico muito grato

3 Respostas

RaulCrash

Vc quer isto?

return ((Pessoa) value).getNome();

EDIT: Onde vc ta definindo o converter p/ este autoComplete, tú pegou do site do Primefaces?

JavaX_JavaX

Obrigado mesmo pela dica.

vou testar aqui para ver se vai funcionar .

grato mesmo.

JavaX_JavaX

não deu certo está me retornando o seguinte erro na hora de salvar

java.lang.NumberFormatException: For input string: “Nome Nome Nome Nome”

se alguém souber porque e poder me ajudar

Criado 6 de dezembro de 2016
Ultima resposta 7 de dez. de 2016
Respostas 3
Participantes 2