Estou fazendo um crud básico em java para por em prática meus conhecimentos sobre servlets. Só me resta agora o servlet de altera, onde justamente estou tendo problemas. Recebo o seguinte erro abaixo na hora que tento alterar. Ele aponta para a linha 25 onde recupero o valor do id do formulário.
java.lang.NumberFormatException: null
at java.base/java.lang.Long.parseLong(Long.java:655)
at java.base/java.lang.Long.parseLong(Long.java:817)
at br.com.henrique.servelets.Editar.doGet(Editar.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"
import="br.com.henrique.dao.DAO, br.com.henrique.model.Pessoa"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<style type="text/css">
.botao{
text-decoration: none;
color: black;
padding: 5px 10px 5px 10px;
background-color: white;
border: 1px solid black;
height: 10px;
margin-left: 70px;
}
</style>
</head>
<body style="width: 100%; height: 100%;">
<div style="width: 25%; margin: 0 auto;" >
<h1>Cadastro de Pessoa!</h1>
<form action="Cadastro" method="post">
<div>
<label for="id">ID: </label>
<input id="id" type="number" name="id" disabled="true value="<c:out value="${id}"/>" required="">
</div><br>
<div>
<label for="nome1">Primeiro Nome: </label>
<input id="nome1" type="text" name="primeiroNome" value="<c:out value="${primeiroNome}"/>" required="">
</div><br>
<div>
<label for="nome2">Segundo Nome: </label>
<input id="nome2" type="text" name="segundoNome" value="<c:out value="${segundoNome}"/>" required="">
</div><br>
<div>
<label for="idade">Idade: </label>
<input id="idade" type="number" name="idade" value="<c:out value="${idade}"/>" required="">
</div><br>
<div>
<label for="sexo">Sexo: </label>
<input id="sexo" type="text" name="sexo" value="<c:out value="${sexo}"/>" required="">
</div><br>
<div>
<input value="Cadastrar" type="submit" required="">
<a class="botao" style="margin-left: 70px;" href="Editar">Editar</a>
</div>
</form><br>
<c:if test = "${param.primeiroNome != null}" >
<c:out value="${'<h4 style=color:green;> Pessoa Cadastrada Com Sucesso!</h4>'}" escapeXml="false"></c:out>
</c:if>
</div>
<jsp:useBean class="br.com.henrique.dao.DAO" id="dao"></jsp:useBean>
<div>
<table style="width: 100%;" border="1">
<tr><th>ID</th><th>Primeiro Nome</th> <th>Segundo Nome</th> <th>Idade</th> <th>Sexo</th><th>Excluir</th><th>Editar</th></tr>
<c:forEach items="${dao.listar()}" var="pessoa">
<tr><td><c:out value="${pessoa.id}"/></td><td><c:out value="${pessoa.getPrimeiroNome()}"/></td><td><c:out value="${pessoa.getSegundoNome()}"/></td>
<td><c:out value="${pessoa.getIdade()}"/></td><td><c:out value="${pessoa.getSexo()}"/></td><td><a href='Excluir?id=<c:out value="${pessoa.getId()}"/>'>Excluir</a></td>
<td><a href='MudarCampo?id=<c:out value="${pessoa.getId()}"/>'>Editar</a></td></tr>
</c:forEach>
</table>
</div>
</body>
</html>
Servlet para mudar os campos do formulário(Ao clicar em editar na tabela, ele irá setar no formulário os valores da tabela para fazer a alteração)
package br.com.henrique.servelets;
import br.com.henrique.dao.DAO;
import br.com.henrique.model.Pessoa;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = “MudarCampo”, urlPatterns = {"/MudarCampo"})
public class MudarCampo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DAO dao = new DAO();
long id = Long.parseLong(request.getParameter("id"));
Pessoa pessoa = dao.listarPorId(id);
request.setAttribute("id", id);
request.setAttribute("primeiroNome", pessoa.getPrimeiroNome());
request.setAttribute("segundoNome", pessoa.getSegundoNome());
request.setAttribute("idade", pessoa.getIdade());
request.setAttribute("sexo", pessoa.getSexo());
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
Servlet para Editar
package br.com.henrique.servelets;
import br.com.henrique.dao.DAO;
import br.com.henrique.model.Pessoa;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "Editar", urlPatterns = {"/Editar"})
public class Editar extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
long id = Long.parseLong(request.getParameter("id"));
String primeiroNome = request.getParameter("primeiroNome");
String segundoNome = request.getParameter("segundoNome");
int idade = Integer.parseInt(request.getParameter("idade"));
String sexo = request.getParameter("sexo");
DAO dao = new DAO();
Pessoa pessoa = dao.listarPorId(id);
pessoa.setPrimeiroNome(primeiroNome);
pessoa.setSegundoNome(segundoNome);
pessoa.setIdade(idade);
pessoa.setSexo(sexo);
dao.alterar(pessoa);
} catch (RuntimeException ex) {
ex.printStackTrace();
}
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}