[Resolvido] Problema com Struts2

7 respostas
andersouza

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.

segue minha jsp:
<%@ 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>
a classe que lista as tarefas:
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;
	}
}
conexão com o mysql:
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.....

7 Respostas

rafaduka

Antes de chegar na página, já verificou se a lista, está preenchida na Action?

andersouza

ja testei a Action
ela esta executando tudo normalmente

rafaduka

não foi isso, que eu quis dizer.
Digo se a lista, está com o size() igual a zero.

andersouza

na verdade parece que ele nem esta chamando o execute

andersouza

ja tentei de tudo
não consigo resolver o problema
achei que poderia ser alguma coisa com o jstl, mas esta tudo normal

andersouza

ninguem sabe como resolver?

andersouza

Consegui resolver.
Era um erro bem simples, simples até demais.
qualquer um que saiba um pouco de Struts percebe logo de cara o erro.

Não sei se quem sabe struts não viu esse tópico ou se viram e acharam tão simples que não quiseram ajudar,
mas ainda bem que encontrei e resolvi, se dependesse de ajuda ia morrer na praia.

Criado 3 de abril de 2012
Ultima resposta 5 de abr. de 2012
Respostas 7
Participantes 2