Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Erro autoComplete (Jsf) Prime Faces

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>