@JavaX_JavaX escreveu:
Depois de varias pesquisas e algumas implementação sem sucesso venho até vocês. O 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 problema é que no campo nome: onde eu estou tentando implementar um autoComplete quando digito uma letra onde ele deveria me retorna as sugestões, recebo o seguinte erro segue abaixo:
Teste Coverte getAsString Pessoa = Nome Nome Nome Nome Nome
dez 22, 2016 2:47:35 PM 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:32)
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)segue o código do formulário abaixo:
<!DOCTYPE html> <ui:composition template="/WEB-INF/template/Layout.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"> <f:metadata> <o:viewParam name="id" value="#{cadastroFuncionarioBean.funcionario}" /> <f:viewAction action="#{cadastroFuncionarioBean.prepararCadastro}" /> </f:metadata> <ui:define name="titulo">Cadastro RH</ui:define> <ui:define name="corpo"> <h1>Cadastro de Funcionários</h1> <h:form id="frm"> <p:messages showDetail="false" showSummary="true" autoUpdate="true" /> <h3>Dados Pessoais</h3> <p:panelGrid columns="4"> <p:outputLabel value="Nome" for="nome" /> <p:autoComplete id="nome" size="60" value="#{cadastroFuncionarioBean.funcionario.pessoa}" completeMethod="#{cadastroFuncionarioBean.pesquisarNomes}" var="pessoa" itemLabel="#{pessoa.nome}" itemValue="#{pessoa}" forceSelection="true" /> <p:outputLabel value="Cpf" for="cpf" /> <p:autoComplete id="cpf" size="14" value="#{cadastroFuncionarioBean.funcionario.cpf}" completeMethod="#{cadastroFuncionarioBean.pesquisarCpfs}" /> <p:outputLabel value="Tipo" for="sexo" /> <p:selectOneButton id="sexo" value="#{cadastroFuncionarioBean.funcionario.sexo}"> <f:selectItems value="#{cadastroFuncionarioBean.tiposFuncionarios}" var="tipoFuncionario" itemValue="#{tipoFuncionario}" itemLabel="#{tipoFuncionario.sexo}" /> </p:selectOneButton> </p:panelGrid> <h3>Endereço</h3> <p:panelGrid columns="4"> <p:outputLabel value="Endereço" for="endereco" /> <p:autoComplete id="endereco" size="60" value="#{cadastroFuncionarioBean.pessoa.endereco}" completeMethod="#{cadastroFuncionarioBean.pesquisarEnderecos}" /> <p:outputLabel value="Numero" for="numero" /> <p:autoComplete id="numero" size="6" value="#{cadastroFuncionarioBean.pessoa.numero}" completeMethod="#{cadastroFuncionarioBean.pesquisarNumeros}" /> <p:outputLabel value="Complemento" for="complemento" /> <p:autoComplete id="complemento" size="20" value="#{cadastroFuncionarioBean.pessoa.complemento}" completeMethod="#{cadastroFuncionarioBean.pesquisarComplementos}" /> <p:outputLabel value="Bairro" for="bairro" /> <p:autoComplete id="bairro" size="30" value="#{cadastroFuncionarioBean.pessoa.bairro}" completeMethod="#{cadastroFuncionarioBean.pesquisarBairros}" /> <p:outputLabel value="Cidade" for="cidade" /> <p:autoComplete id="cidade" size="30" value="#{cadastroFuncionarioBean.pessoa.cidade}" completeMethod="#{cadastroFuncionarioBean.pesquisarCidades}" /> <p:outputLabel value="Estado" for="estado" /> <p:autoComplete id="estado" size="2" value="#{cadastroFuncionarioBean.pessoa.estado}" completeMethod="#{cadastroFuncionarioBean.pesquisarEstados}" /> <p:outputLabel value="Cep" for="cep" /> <p:autoComplete id="cep" size="9" value="#{cadastroFuncionarioBean.pessoa.cep}" completeMethod="#{cadastroFuncionarioBean.pesquisarCeps}" /> </p:panelGrid> <h3>Dados de Admissão</h3> <p:panelGrid columns="2"> <p:outputLabel value="Cargo" for="cargo" /> <p:autoComplete id="cargo" size="60" value="#{cadastroFuncionarioBean.funcionario.cargo}" completeMethod="#{cadastroFuncionarioBean.pesquisarCargos}" /> <p:outputLabel value="Salário" /> <p:inputText size="12" value="#{cadastroFuncionarioBean.funcionario.salario}" label="salario"> <f:convertNumber locale="pt_BR" maxFractionDigits="2" minFractionDigits="2" /> </p:inputText> <p:outputLabel value="Data de Admissão" for="dataAdmissao" /> <p:calendar id="dataAdmissao" size="12" pattern="dd/MM/yyyy" value="#{cadastroFuncionarioBean.funcionario.dataAdmissao}"> <p:ajax event="dateSelect" update="@this dataAdmissao" process="@this dataAdmissao" listener="#{cadastroFuncionarioBean.dataAdmissaoAlterada}" /> </p:calendar> </p:panelGrid> <p:commandButton value="Salvar" action="#{cadastroFuncionarioBean.salvar}" icon="ui-icon-disk" update="@form" /> </h:form> </ui:define> </ui:composition>
segue meu converte que pega o Id e deve me retorna o nome:
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) //@FacesConverter("themeConverter") 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; System.out.println("Teste Coverte getAsObject Pessoa = "+value); if (value != null && !"".equals(value)) { retorno = this.pessoas.porId(new Long(value)); } return retorno; } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { System.out.println("Teste Coverte getAsString Pessoa = "+value); if (value != null && !"".equals(value)) { return ((Pessoa) value).getId().toString(); } return null; }
}
caso alguém saiba e possa me ajudar fico grato
Mensagens: 5
Participantes: 2