Não estou conseguindo mostrar uma lista tirada do mysql no meu jsp.
as conexões estão corretas, mas pelo que parece a lista esta ficando vazia.
<%@ 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>
<title>Lista de tarefas</title>
<body>
<a href="formulario-tarefas">Criar nova tarefa</a>
<br />
<br />
<table border="1">
<tr>
<th>Id</th>
<th>Descrição</th>
<th>Finalizado?</th>
<th>Data de finalização</th>
</tr>
<c:forEach var="tarefa" items="${tarefas}">
<tr>
<td>${tarefa.id }</td>
<td>${tarefa.descricao}</td>
<c:if test="${tarefa.finalizado eq 0 }">
<td>Não finalizado</td>
</c:if>
<c:if test="${tarefa.finalizado eq 1 }">
<td>Finalizado</td>
</c:if>
<td><fmt:formatDate value="${tarefa.dataFinalizacao.time }"
pattern="dd/MM/yyyy" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>
package br.com.anderson.tarefas.action;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import br.com.anderson.tarefas.dao.TarefaDAO;
import br.com.anderson.tarefas.modelo.Tarefa;
public class ListaTarefaAction {
private List<Tarefa> tarefas;
@Action(value = "listaTarefas", results = { @Result(name = "ok", location = "lista-tarefas.jsp") })
public String execute() {
tarefas = new TarefaDAO().lista();
return "ok";
}
public List<Tarefa> getTarefas() {
return tarefas;
}
}
package br.com.anderson.tarefas.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.anderson.tarefas.modelo.Tarefa;
public class TarefaDAO {
private Connection connection;
public TarefaDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Tarefa tarefa) {
String sql = "insert into tarefas (descricao,finalizado,dataFinalizacao) values(?,?,?)";
try {
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, tarefa.getDescricao());
ps.setBoolean(2, false);
Calendar data = Calendar.getInstance();
ps.setDate(3, new Date(data.getTimeInMillis()));
ps.execute();
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public List<Tarefa> lista() {
try {
List<Tarefa> tarefas = new ArrayList<Tarefa>();
PreparedStatement ps = this.connection
.prepareStatement("select * from tarefas");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Tarefa tarefa = new Tarefa();
tarefa.setId(rs.getLong("id"));
tarefa.setDescricao(rs.getString("descricao"));
tarefa.setFinalizado(rs.getBoolean("finalizado"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataFinalizacao"));
tarefa.setDataFinalizacao(data);
tarefas.add(tarefa);
}
rs.close();
ps.close();
return tarefas;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
se alguem souber o que pode estar acontecendo.....