For input string (JSF - Autocomplete primefaces)[Resolvido]

Boa tarde estou precisando de uma ajudinha, tenho uma pagina .xhtml com um autocomplete do primefaces dentro, está funcionando legal, mais quando tenho alguma Exception estou levando o erro java.lang.NumberFormatException: For input string: “nome”, já conferi meu converter e não consegui descobrir onde está o problema, segue os códigos abaixo, obrigado:

Página xhtml

[code]

<ui:composition template="/dscliente.xhtml">

<!--Fim Mensagem de Boas Vindas-->
<ui:define name="principal">

	<!-- Begin Grupo Form -->

	<h1>Cadastro de Eventos - SMS</h1>

	<p>Cadastre aqui os seus Eventos (SMS).</p>

	<div id="divMsg">
		<p:messages autoUpdate="true" closable="true" />
	</div>

	<p:growl id="messages" showDetail="true" />

	<br />

	<h:form id="FormCadEvento" prependId="false">
		<p:focus for="txtNome" />
		<h:inputHidden value="#{eventoBean.evento.id}" />
		<h:inputHidden value="#{eventoBean.evento.contaUsuario.empresa.id}"
			rendered="#{eventoBean.evento.id > 0}" />
		<h:inputHidden value="#{eventoBean.evento.situacao}" />

		<h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">

			<h:outputText value="Título Evento" />
			<h:panelGroup>
				<p:inputText name="txtNome" id="txtNome"
					value="#{eventoBean.evento.nome}" required="true"
					requiredMessage="Titulo Evento não informado" style="width:350px"
					size="20">
					<f:validateLength minimum="1" maximum="20" />
				</p:inputText>
				<p:watermark value="Digite seu Título do SMS" for="txtNome" />
			</h:panelGroup>

			<h:outputText value="Contato" />
			<h:panelGroup>
				<p:autoComplete value="#{eventoBean.evento.contatos}"
					maxResults="10" size="47" id="autoContatos" minQueryLength="2"
					completeMethod="#{contatoBean.completeContato}" var="c"
					required="true" requiredMessage="Contato não informado"
					itemLabel="#{c.nome}" converter="contatoConverter"
					itemValue="#{c}" forceSelection="true" dropdown="true">

					<p:column headerText="Nome">  
              			  	#{c.nome}
           	 			</p:column>

					<p:column headerText="Cel.">  
              			  	#{c.cel}  
           	 			</p:column>

					<p:ajax event="itemSelect" listener="#{eventoBean.handleSelect}" />

				</p:autoComplete>
				<p:watermark value="Digite seu Contato" for="autoContatos" />
			</h:panelGroup>

			<h:outputText value="Texto" />
			<h:panelGroup>
				<p:inputTextarea name="txtTexto" id="txtTexto"
					value="#{eventoBean.evento.texto}" required="true"
					requiredMessage="Texto do Evento não informado" size="140"
					style="width:350px" counter="counter" maxlength="140"
					counterTemplate="{0} Caracteres restantes." autoResize="false">
					<f:validateLength minimum="1" maximum="140" />
				</p:inputTextarea>
				<h:outputText id="counter" />
				<p:watermark value="Digite seu Texto para ser enviado"
					for="txtTexto" />
			</h:panelGroup>


			<h:panelGroup rendered="false">
				<h:outputText value="Local" />
				<p:inputText name="txtLocal" id="txtLocal" style="width:350px"
					value="#{eventoBean.evento.local}" size="150">
					<f:validateLength minimum="1" maximum="150" />
				</p:inputText>
			</h:panelGroup>

			<h:outputText value="Agendamento" />
			<h:panelGroup>
				<p:calendar value="#{eventoBean.evento.inicio}" id="txtInicio"
					style="width:350px" pattern="dd/MM/yyyy HH:mm:ss" showOn="button" showButtonPanel="true" >
					<f:convertDateTime locale="pt_BR" dateStyle="long"
						pattern="dd/MM/yyyy HH:mm:ss" />
				</p:calendar>
				<p:watermark value="Digite seu Agendamento" for="txtInicio" />

			</h:panelGroup>

			<br />
			<f:facet name="footer">

				<p:commandButton id="btnSalvarEvento" value="Enviar SMS"
					icon="ui-icon-transferthick-e-w" action="#{eventoBean.salvar}"
					rendered="#{eventoBean.inclusao}" ajax="false"
					alt="Salvando e Enviando os dados do Evento" />
				
				<p:spacer width="10"/>
				<p:commandButton id="btnConsulta" value="Listar SMS"
					icon="ui-icon-search" action="#{eventoBean.goConsulta}"
					alt="Listando todos SMS" immediate="true" />

			</f:facet>

		</h:panelGrid>

	</h:form>


	<!-- End Grupo Form -->


</ui:define>

</ui:composition>

[/code]

Converter


package br.com.send2u.util;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.persistence.PersistenceException;
import javax.servlet.http.HttpSession;

import br.com.send2u.service.ContatoService;
import br.com.send2u.vo.ContaUsuario;
import br.com.send2u.vo.Contato;

@FacesConverter(value = "contatoConverter")
public class ConverterContato implements Converter {

	private ContatoService contatoService = new ContatoService();

	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		List<Contato> contatos = null;
		if (!arg2.trim().equals("")) {

			try {
				FacesContext context = FacesContext.getCurrentInstance();
				HttpSession session;
				ContaUsuario cs;
				
				cs = null;
				
				session = (HttpSession) context.getExternalContext().getSession(false);
				
				if (session != null){
					cs = (ContaUsuario)session.getAttribute("contaUsuario");
				}
				
				Contato contato = (Contato) contatoService.findById(String.valueOf(arg2), String.valueOf(cs.getEmpresa().getId()));
				
				if (contato != null){
					contatos = new ArrayList<Contato>();
					contatos.add(contato);
				}
				
			} catch (PersistenceException e) {
				FacesContextUtil.enviaMessage(FacesContextUtil.getTITULO_MSG_ERRO(),
						"Problema ao tentar converter Contato", "FormCadEvento",
						FacesContextUtil.getContext(),
						FacesMessage.SEVERITY_FATAL);
			} catch (Exception e) {
				FacesContextUtil.enviaMessage(FacesContextUtil.getTITULO_MSG_ERRO(),
						"Problema ao tentar converter Contato", "FormCadEvento",
						FacesContextUtil.getContext(),
						FacesMessage.SEVERITY_FATAL);
			}

		}
		return contatos;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		String result = null;
	
		if (arg2 != null) {

			try {
				result = String.valueOf(((Contato)arg2).getId());
			} catch (Exception e) {
				FacesContextUtil.enviaMessage(FacesContextUtil.getTITULO_MSG_ERRO(),
						"Problema ao tentar converter Contato", "FormCadEvento",
						FacesContextUtil.getContext(),
						FacesMessage.SEVERITY_FATAL);
			}
		}
		return result;
	}

}

Parte do ManagedBean


public String salvar() {
		try {
			
			contatoService.setContato(contato).salvar();
			FacesContextUtil.enviaMessage(FacesContextUtil.getTITULO_MSG_SUCESSO(),"Contato cadastrado com sucesso!",
					FORM_CADASTRO, context, FacesMessage.SEVERITY_INFO);
			//limpar();
		} catch (Exception e) {
			logger.error("Problema ao tentar salvar Contato");
			FacesContextUtil.enviaMessage(FacesContextUtil.getTITULO_MSG_ERRO(),"Inclusão do Contato com problemas",
					FORM_CADASTRO, context, FacesMessage.SEVERITY_FATAL);
		}
		return SUCESSO_CADASTRO;
	}

public List<Contato> completeContato(String query)
			throws PersistenceException, Exception {
		if (contato.getEmpresa() == null) {
			carregaEmpresa();
		}

		List<Contato> contatos = new ArrayList<Contato>();
		ContatoService contatoService = new ContatoService();

		if (!query.trim().equals("")) {
			for (Contato c : contatoService.getContatos(String.valueOf(contato
					.getEmpresa().getId()))) {
				if (c.getNome().toUpperCase().startsWith(query.toUpperCase()))
					contatos.add(c);
			}
		} else {
			contatos = contatoService.getContatos(String.valueOf(contato.getEmpresa().getId()));
		}

		return contatos;
	}

Service


public void salvar() throws Exception {
		SmsService smsService;

		/**
		 * Realiza todas as validações antes de enviar o Evento (SMS)
		 */
		if (!validaEvento()) {
			throw new Exception();
		}

		try {
			session.getTransaction().begin();

			beforeEnvioSMSSimples();

			mySqlEvento.salvar(evento);

			smsService = new SmsService(evento);

			/**
			 * Envia SMS
			 */
			smsService.enviarSmsSimples();

			/**
			 * Atualiza totais de SMS enviado e Grava Log
			 */
			afterEnvioSMSSimples();

			session.getTransaction().commit();

		} catch (Exception e) {
			logger.setLevel(Level.ERROR);
			logger.error("Erro ao enviar SMS [" + e.getMessage() + "]");
			session.getTransaction().rollback();
			throw new Exception(e);
		}

	}

public Boolean validaEvento() {
		Boolean result = Boolean.TRUE;
		FacesContext context = FacesContextUtil.getContext();
		List<Contrato> contratos = new ArrayList<Contrato>();
		ContratoService contratoService = new ContratoService();

		GregorianCalendar calendar = new GregorianCalendar();
		Number countSms = 0;

		try {
			contratos = (List<Contrato>) contratoService.getContratos(String
					.valueOf(FacesContextUtil.getContaUsuario().getEmpresa()
							.getId()));
		} catch (Exception e) {
			logger.error("Problema ao tentar encontrar Contrato");
			FacesContextUtil.enviaMessage("Contrato",
					"Contrato não encontrado", "FormCadEvento", context,
					FacesMessage.SEVERITY_FATAL);
			return Boolean.FALSE;
		}
		
		try{
			countSms = mySqlEvento.totalSmsEnvMes(SituacaoSms.SMS_ENVIADA,
					calendar.getActualMinimum(Calendar.DAY_OF_MONTH),
					calendar.getActualMaximum(Calendar.DAY_OF_MONTH)).intValue();
		}catch(Exception e){
			
		}

		/**
		 * Valida se existe um contrato para empresa.
		 */
		if (contratos.isEmpty()) {
			FacesContextUtil.enviaMessage(
					FacesContextUtil.getTITULO_MSG_ERRO(),
					FacesContextUtil.getMSG_SEM_CONTRATO(), "FormCadEvento",
					context, FacesMessage.SEVERITY_FATAL);
			return Boolean.FALSE;
		} else {

			/**
			 * Valida se a situação do contrato está está apto a enviar SMS.
			 */
			if (!contratos.get(0).getSituacao().equals(SituacaoContrato.PAGO)
					&& !contratos.get(0).getSituacao()
							.equals(SituacaoContrato.CONTRATADO)) {
				FacesContextUtil.enviaMessage(
						FacesContextUtil.getTITULO_MSG_ERRO(),
						FacesContextUtil.getMSG_CONTRATO_NAO_PERMITE()
								+ SituacaoContrato.getDescricao(contratos
										.get(0).getSituacao()),
						"FormCadEvento", context, FacesMessage.SEVERITY_FATAL);
				return Boolean.FALSE;
			}

			/**
			 * Valida se o Contrato está vencido.
			 */
			if (contratos.get(0).getDtFinal().before(evento.getData())
					|| contratos.get(0).getDtFinal().before(evento.getInicio())) {
				FacesContextUtil.enviaMessage(
						FacesContextUtil.getTITULO_MSG_ERRO(),
						FacesContextUtil.getMSG_CONTRATO_VENCIDO()
								+ contratos.get(0).getDtFinal(),
						"FormCadEvento", context, FacesMessage.SEVERITY_FATAL);
				return Boolean.FALSE;
			}

			/**
			 * Valida se a quantidade de SMS enviado estourou a quantidade de
			 * SMS do Contrato.
			 */
			if (mySqlEvento.totalSmsEnvMes(SituacaoSms.SMS_ENVIADA,
					calendar.getActualMinimum(Calendar.DAY_OF_MONTH),
					calendar.getActualMaximum(Calendar.DAY_OF_MONTH)).intValue() >
					contratos.get(0).getTotalSmsEnviado()) {
				
				FacesContextUtil.enviaMessage(
						FacesContextUtil.getTITULO_MSG_ERRO(),
						FacesContextUtil.getMSG_CONTRATO_LIMITE_SMS()
								+ "Total Contratado: "
								+ contratos.get(0).getTotalSms()
								+ ", Total Enviado: "
								+ contratos.get(0).getTotalSmsEnviado(),
						"FormCadEvento", context, FacesMessage.SEVERITY_FATAL);
				return Boolean.FALSE;
			}

			/**
			 * Valida se a quantidade de SMS controlado por mês estourou a
			 * quantidade de SMS do Contrato.
			 */
			if (countSms.intValue() > contratos
					.get(0).getTotalSmsMes()) {
					
				FacesContextUtil.enviaMessage(
						FacesContextUtil.getTITULO_MSG_ERRO(),
						FacesContextUtil.getMSG_CONTRATO_LIMITE_SMS()
								+ "Total Limite Mês: "
								+ contratos.get(0).getTotalSmsMes()
								+ ", Total Enviado: "
								+ countSms,
						"FormCadEvento", context, FacesMessage.SEVERITY_FATAL);
				return Boolean.FALSE;
			}

		}

		return result;
	}

Pilha de erro


12/02/13 14:45 [http-bio-8080-exec-2] ERROR br.com.send2u.dao.MySqlContato:47 [Erro ao recuperar dados [Contrato]]
12/02/13 14:45 [http-bio-8080-exec-2] ERROR br.com.send2u.service.EventoService:287 [Problema ao tentar encontrar Contrato]
12/02/13 14:45 [http-bio-8080-exec-2] ERROR br.com.send2u.managedBean.EventoBean:87 [Problema ao tentar salvar Evento]
12/02/13 14:46 [http-bio-8080-exec-2] DEBUG br.com.send2u.controler.ListenerFasesJSF:34 [Página Atual: /CadastroEvento.xhtml]
Fev 12, 2013 2:46:34 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
Grave: Error Rendering View[/CadastroEvento.xhtml]
java.lang.NumberFormatException: For input string: "nome"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at javax.el.ListELResolver.coerce(ListELResolver.java:173)
	at javax.el.ListELResolver.getValue(ListELResolver.java:52)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at org.primefaces.component.autocomplete.AutoComplete.getItemLabel(AutoComplete.java:142)
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeInput(AutoCompleteRenderer.java:181)
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSingleMarkup(AutoCompleteRenderer.java:141)
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeMarkup(AutoCompleteRenderer.java:124)
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeEnd(AutoCompleteRenderer.java:102)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
	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:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	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:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	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:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Obrigado.

Topor,

Tente usar com o ajax true no seu metodo!

[]s

rfagalde, boa, funcionou!

Obrigado pela Ajuda.

Abs.