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.