[RESOLVIDO] - Caleum fj21 - Problemas com listagem

Boa noite amigos.

Gostaria de pedir ajuda quanto ao exercício 11.12 da apostila jf21 da caleum, no qual pede-se que seja criada uma listagem dentro de uma .jsp com os resultados provenientes de um banco de dados. Criei a .jsp e a classe Action, conforme a apostila, porém a jsp executa a classe Action (dentro desta, inserir dois sysouts para ver se a mesma executava).
Não sei se é importante, mas vou citar:
1 - Consigo realizar a inclusão de dados no banco através do struts, então acredito que o mesmo está funcionando.
2 - A consulta ao banco está funcionando, pois criei uma classe para executar a consultar e a mesma retornou os objetos do banco.

Gostaria também de pedir para alguém me explicar como é que funciona a linkagem entre as jsps e as classes action. Na parte da adição de tarefas(é o nome do objeto posto no banco) a mesma se dá através de um formulário que recebe o value de uma action, porém nesta parte de consulta não consigo entender como que este processo se dá.

Segue os meus códigos

  • web.xml
    <?xml version="1.0" encoding="UTF-8"?>  
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee[url]http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"[/url] id="WebApp_ID" version="3.0">  
      <display-name>fj21-Tarefas</display-name>  
      <welcome-file-list>  
        <welcome-file>index.jsp</welcome-file>  
      </welcome-file-list>  
        
         
       <!-- Declaração do struts como filtro e fazendo com que todas as requisições  
           passem por ele -->  
       <filter>  
          <filter-name>struts2</filter-name>  
          <filter-class>  
             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
          </filter-class>  
       </filter>  
       <filter-mapping>  
          <filter-name>struts2</filter-name>  
          <url-pattern>/*</url-pattern>  
       </filter-mapping>  
    </web-app>  
  • ListaTarefasAction
    package action;  
      
    import java.util.List;  
      
    import org.apache.struts2.convention.annotation.Action;  
    import org.apache.struts2.convention.annotation.Result;  
      
    import dao.ConnectionFactory;  
    import dao.Tarefa;  
    import dao.TarefaDAO;  
      
    public class ListaTarefasAction{  
      
       private List<Tarefa> col;  
      
       @Action(value="ListaTarefas", results={  
             @Result(name="ok", location="/ListaTarefas.jsp")  
       })  
       public String execute(){  
          System.out.println("Aki 1");  
          col = new TarefaDAO(new ConnectionFactory().getConexao()).getCol();  
          System.out.println("Aki 2");  
          return "ok";  
       }  
         
       public List<Tarefa> getCol() {  
          return col;  
       }  
      
       public void setCol(List<Tarefa> col) {  
          this.col = col;  
       }  
         
         
    }  
  • ListaTarefas.jsp
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
       pageEncoding="ISO-8859-1"%>  
      
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
    <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  
    <%@taglib uri="/struts-tags" prefix="s"%>  
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
    <title>Tarefas</title>  
    </head>  
    <body>  
       <h1>Tarefas do Dia</h1>  
      
       <a href="adicionaTarefa.jsp">Criar nova tarefa</a>  
       <br>  
       <br>  
       <table border=1>  
      
          <tr>  
             <th>Id</th>  
             <th>Descricao</th>  
          </tr>  
      
          <c:forEach items="${col}" var="tarefa">  
             <tr>  
                <td>${tarefa.id}</td>           
                <td>${tarefa.descricao}</td>  
             </tr>  
      
          </c:forEach>  
      
       </table>  
    </body>  
    </html>  

Grato pela ajuda, subscrevo-me.

Juba

A action esta redirecionando para sua .jsp e não está listando os contatos?? ou nem redireciona para a jsp??

Boa noite Caio

Valeu amigo, você matou a charada. O meu problema é que eu não tinha entendido o funcionamento do struts, então eu pedia para carregar direto .jsp no browser e não o value da classe action.

Obrigado pela atenção amigo, de uma unica vez entendi como que o struts funcionava e o porque a listagem não carregava.

Vlw.

Que bom que você conseguiu, não ajudei muito, mas você conseguiu enxergar onde estava o problema.

abraço