Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

erro java.lang.NumberFormatException: For input string: "cidade"

Boa tarde galera, tenho uma duvida, me lembro que o Manoel acho que ele é um moderador da alura tinha me respondido... Só que eu não tinha prestado atenção... Porem a duvida não é igual e sim bem parecida. Irei postar meu codigo aqui...

Minha pagina html

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/_template.xhtml">
    <ui:define name="conteudo">
        <p:dataTable var="funcionario"
            value="#{funcionarioBean.lstFuncionarios}"
            emptyMessage="Nenhum funcionario encontrado">

            <f:facet name="header"> 
                Funcionarios
            </f:facet>

            <p:column headerText="Nome">
                <h:outputText value="#{funcionario.nome}" />
            </p:column>

            <p:column headerText="Salario">
                <h:outputText value="#{funcionario.salario}" />
            </p:column>

            <p:column headerText="Data contratada">
                <h:outputText value="#{funcionario.dataContrada.time}">
                    <f:convertDateTime pattern="dd/MM/yyyy"
                        timeZone="America/Sao_Paulo" />
                </h:outputText>
            </p:column>

p:column headerText="Cidade">
                <h:outputText value="#{funcionario.enderecos.cidade}" />
            </p:column>

        </p:dataTable>

    </ui:define>
</ui:composition>
</html>

Tenho certeza que o erro esta na minha tabela bem nessa parte...


<p:column headerText="Cidade">
                <h:outputText value="#{funcionario.enderecos.cidade}" />
            </p:column>

porque o meu enderecos é uma lista, e acho que teria que ter uma posiçao para a leitura da cidade, não se estou certo... Quais opções tenho para sair desse erro?

8 respostas

Opa fala aí Alisson, blz?

Não entendi direito, você tem uma lista de cidades e com base nessa lista você quer exibir todas dentro de uma coluna seria isso?

Se sim manda o código da classe enderecos para eu tentar te ajudar.

Beleza e você? Então tenho a minha tabela de funcionario correto? e meu funcionario pode ter varios enderecos, então terei uma lista de enderecos correto? nesses enderecos terei uma cidade e bairro... Ok até ai ok agora chego pra mim mostrar minha lista de funcionario, e quando eu faço do jeito que está acima me retorna o erro indicado. Que seria o seguinte erro

GRAVE: Error Rendering View[/paginas/funcionarioPesquisa.xhtml]
java.lang.NumberFormatException: For input string: "cidade"
    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:163)
    at javax.el.ListELResolver.getValue(ListELResolver.java:51)
    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:184)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.column.Column.renderChildren(Column.java:352)
    at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:1051)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:999)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:907)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:854)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:814)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:290)
    at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:252)
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:87)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:89)
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    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:659)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    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)

irei postar novamente o meu html, que estou tentando mostrar na tela meus funcionario com seus enderecos.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/_template.xhtml">
    <ui:define name="conteudo">
        <p:dataTable var="funcionario"
            value="#{funcionarioBean.lstFuncionarios}"
            emptyMessage="Nenhum funcionario encontrado">

            <f:facet name="header"> 
                Funcionarios
            </f:facet>

            <p:column headerText="Nome">
                <h:outputText value="#{funcionario.nome}" />
            </p:column>

            <p:column headerText="Salario">
                <h:outputText value="#{funcionario.salario}" />
            </p:column>

            <p:column headerText="Data contratada">
                <h:outputText value="#{funcionario.dataContrada.time}">
                    <f:convertDateTime pattern="dd/MM/yyyy"
                        timeZone="America/Sao_Paulo" />
                </h:outputText>
            </p:column>

            <p:column headerText="Cidade">
                <h:outputText value="#{funcionario.enderecos.cidade}" />
            </p:column>

        </p:dataTable>

    </ui:define>
</ui:composition>
</html>

Olhando bem podemos ver que tem um campo cidade que quero mostrar né? mais esse campo é a cidade e está dentro do meu enderecos, e quando eu faço da seguinte forma.

<p:column headerText="Cidade">
                <h:outputText value="#{funcionario.enderecos.cidade}" />
            </p:column>

Ele me retorna o erro, esse erro acho que é porque funcionario.enderecos.cidade está em uma lista, acho que teria que colocar um index "posição" desejada para buscar entendeu? ou um interador do tipo forEach, mais não sei como sair desse erro.

Acho que entendi, mas nesse caso você teria que mostrar todos os endereços do seu funcionário nessa coluna certo?

Teria como você enviar o código da sua classe endereço?

sim queria mostrar os enderecos adicionados. minha classe modelo Funcioanario

@Entity
@Table
@NamedQueries({
    @NamedQuery(name = "Funcionario.listaTodos", query = "Select f from Funcionario f join fetch f.enderecos")
})
public class Funcionario implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long codigo;

    @Column(length = 50, nullable = false, unique = true)
    private String nome;

    @Column
    private Double salario;

    @Temporal(TemporalType.DATE)
    @Column
    private Calendar dataContrada = Calendar.getInstance();

    @OneToMany(mappedBy = "funcionario", cascade = CascadeType.ALL)
    private List<Endereco> enderecos = new ArrayList<Endereco>();

Endereco

@Entity
@Table
public class Endereco implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long codigo;

    @Column(length = 50, nullable = false)
    private String cidade;

    @Column(length = 40)
    private String bairro;

    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    private Funcionario funcionario = new Funcionario();
solução!

Certo,

Nesse caso você vai ter que iterar sobre a lista de endereços, e imprimir cada um.

Por exemplo:

  <p:column headerText="Endereços">
        <ui:repeat value="#{funcionario.enderecos}" var="endereco">
                #{endereco.cidade} - #{endereco. bairro}" 
        </ui:repeat>
   </p:column>

Correto Fernando, só que eu queria mostrar por exemplo a minha cidade e meu bairro em colluna diferentes, e como mostrar? obrigado desde ja

OBRIGADO deu certo aqui meu amigo. vlw

Opa precisando manda aí!

Flw