Apostila Caelum FJ21 - 9.9 - Exercícios: Lógica para alterar contatos(Lista Vazia)
Estou iniciando em java e estou seguindo a apostila da Caelum e estou com problemas no exercício 9.9 Lógica para Listar contatos - A lista na página “lista-contatos” está vazia. Alquem pode me ajudar?
Segue o código…
Classe Controladora
/**
* Servlet implementation class ControllerServlets
*/
@WebServlet("/mvc")
public class ControllerServlets extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String parametro = req.getParameter("logica");
String nomeDaClasse = "br.com.listagens.mvc.logica." + parametro;
try {
Class classe = Class.forName(nomeDaClasse);
Logica logica = (Logica) classe.newInstance();
String pagina = logica.executa(req, resp);
req.getRequestDispatcher(pagina).forward(req, resp);
} catch (Exception e) {
throw new ServletException("A lógica de negócios causou uma exceção", e);
}
}
}
Remove Contatos
public class RemoveAlunosLogic implements Logica{
public String executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {
int id = Integer.parseInt(req.getParameter("id"));
Aluno aluno = new Aluno();
aluno.setId(id);
AlunoDao alunoDao = new AlunoDao();
alunoDao.removeAluno(aluno);
System.out.println("Excluindo Aluno... ");
return "mvc?logica=ListaAlunosLogic";
}
}
Classe Lista contatos
public class ListaAlunosLogic implements Logica{
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
ArrayList<Aluno> alunos = new AlunoDao().getListarAlunos();
req.setAttribute("Alunos", alunos);
return "nova-lista.jsp";
}
}
Classe Lista-contatos
<title>Alunos Cadastrados</title>
</head>
<body>
<c:import url="cabecalho.jsp" />
<!-- cria o DAO -->
<table border="1">
<!-- percorre contatos montando as linhas da tabela -->
<tr>
<th>Nome</th>
<th>Data Nasc</th>
<th>Email</th>
<th>Telefone</th>
<th>Endereço</th>
<th>Remover</th>
</tr>
<c:forEach var="aluno" items="${alunos}">
<tr>
<td>${aluno.nome}</td>
<td><fmt:formatDate value="${aluno.datanasc.time}"
pattern="dd/MM/yyyy" /></td>
<td>
<c:if test="${not empty aluno.email}">
<a href="malito:{alunno.email}"> ${aluno.email} </a>
</c:if> <c:if test="${empty aluno.email}">
Email não informado!
</c:if>
</td>
<td>${aluno.telefone}</td>
<td>${aluno.endereco}</td>
<td>
<a href="mvc?logica=RemoveAlunosLogic&id=${aluno.id}">Remover</a></a>
</td>
</tr>
</c:forEach>
</table>
<c:import url="rodape.jsp" />
</body>
</html>
Observação: os nomes das classes e dos dados estão diferentes por opção, mas, a lógica é a mesma da apostila. Não consigo entender onde está o erro, se eu instanciar a classe DAO da forma antiga (<jsp:useBean id="dao" class="br.com.caelum.agenda.dao.ContatoDao" />) os dados são listados corretamente.
