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

java.lang.NumberFormatException:

Galera,

Estou com um problema. Quando abro a URL http://localhost:8080/contas/listaContas , estou recebendo o erro

java.lang.NumberFormatException: For input string: "id"
    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)

Entendi que é algum problema no todasContas.id, mas não entendi como resolver..

Controller:

@RequestMapping("/listaContas")
    public ModelAndView lista(){
        ContaDAO dao = new ContaDAO();
        List<Conta> contas = dao.lista();
        ModelAndView mv = new ModelAndView("conta/lista");
        mv.addObject("todasContas", contas);
        return mv;
    }

Meu JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <table>
    <tr>
        <th>Código</th>
        <th>Descrição</th>
        <th>Valor</th>
        <th>Tipo</th>
        <th>Paga?</th>
        <th>Data de Pagamento</th>
    </tr>
    <c:forEach items="${todasContas}" var ="conta">
        <tr>
            <td>${todasContas.id}</td>
            <td>${todasContas.descricao}</td>
            <td>${todasContas.valor}</td>
            <td>${todasContas.tipo}</td>
            <td>
            <c:if test="${todasContas.paga eq false }">
                Não paga :(
            </c:if>
            <c:if test="${todasContas.paga eq true}">
                Paga :)
            </c:if>
            </td>
            <td><fmt:formatDate value="${todasContas.dataPagamento.time}" pattern="dd/MM/yyyy"/></td>
            </tr>
    </c:forEach>

    </table>

</body>
</html>

Podem me ajudar por favor? Obrigado :)

2 respostas
solução!

Solucionado!

Perdão pelo post, faz tempo que estou estudando e acho que a cabeça já começou a fazer confusão rs.

Mas o problema era que utilizei a lista para pegar os atributos, ao invés do objeto. Conforme exemplo a seguir:

<td>${todasContas.id}</td>

Caso alguém tenha o mesmo problema, espero que ajude.

Olá Fernando, tudo bem?

Uma sugestão, tente alterar essa parte do seu código:

<c:forEach items="${todasContas}" var ="conta">
        <tr>
            <td>${todasContas.id}</td>
            <td>${todasContas.descricao}</td>
            <td>${todasContas.valor}</td>
            <td>${todasContas.tipo}</td>

por

<c:forEach items="${todasContas}" var ="conta">
        <tr>
            <td>${conta.id}</td>
            <td>${conta.descricao}</td>
            <td>${conta.valor}</td>
            <td>${conta.tipo}</td>

Espero que funcione!

Abs