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