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

NumberFormatException

Estou tomando uma Number format exception ao tentar converter o parametro id (String) em Integer. Segue o codigo das classes:

Servlet de alteração:

@WebServlet("/alteraEmpresa")
public class AlteraEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String nomeEmpresa = request.getParameter("nome");
        String dataEmpresa = request.getParameter("data");
        Integer idEmpresa = Integer.valueOf(request.getParameter("id")); 


        Date novaData; 

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
            novaData = sdf.parse(dataEmpresa);
        } catch (ParseException e) {

            throw new ServletException();
        } 

        Banco banco = new Banco();
        Empresa empresa = banco.buscaEmpresa(idEmpresa); 
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(novaData); 

        response.sendRedirect("listaempresas");

        System.out.println(empresa.getNome());

    }

}

.jps da alteração:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:url value="/alteraEmpresa" var="link"/>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="${link}" method="post">

        Nome: <input type="text" name = "nome" value="${empresa.nome} "/>
        Data: <input type="text" name = "data" value= "<fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/>"/>
        <input type="hidden" name = "id" value="${empresa.id} "/>
        <input type="submit">

    </form>
</body>
</html>
2 respostas
solução!

Oie Caio, tudo bem contigo?

Esse erro aconteceu por conta de um pequeno detalhe no arquivo "formAlteraEmpresa.jsp", na linha do input do id: <input type="hidden" name = "id" value="${empresa.id} "/>, o erro está nesse espaço entre as chaves ( } ) e as aspas ( " ), o certo é os dois estarem colados, sem espaço nenhum entre eles. Com essa mudança ficaria assim: <input type="hidden" name = "id" value="${empresa.id}"/>.

O erro acontece no momento da conversão de "String" para "Integer", pois com esse espaço entre as chaves e as aspas a informação que entra é "1 ", o Integer não entende esse "espaço" depois do 1, e ai acontece a exceção.

Espero ter ajudado! Qualquer outra dúvida fico a disposição :)

Bons estudos!

Grande Igor!

Valeu pela força! Quebrei a cabeça com isso!! Mania de dar espaço nas coisas para ler melhor!