Boa noite pessoal, vou tentar explicar junto com o código:
Esta é a minha view:
[code]<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>
var data = new Date();
var dia = data.getDate();
var mes = data.getMonth() + 1;
var ano = data.getFullYear();
if (dia < 10) {
dia = "0" + dia;
}
if (mes < 10) {
mes = "0" + mes;
}
var dataFormatada = dia + "/" + mes + "/" + ano;
$("#data_tarefa_"+id).html(dataFormatada);
});
}
</script>
<table>
<tr>
<th>Id</th>
<th>Descrição</th>
<th>Finalizado?</th>
<th>Data de finalização</th>
</tr>
<c:forEach items="${tarefas}" var="tarefa">
<tr>
<td>${tarefa.id}</td>
<td>${tarefa.descricao}</td>
<c:if test="${tarefa.finalizado eq false}">
<td id="tarefa_${tarefa.id}">
<a href="#" onClick="finalizaAgora(${tarefa.id})"> Finaliza agora!</a>
</td>
</c:if>
<c:if test="${tarefa.finalizado eq true}">
<td>Finalizado</td>
</c:if>
<td id="data_tarefa_${tarefa.id}">
<fmt:formatDate value="${tarefa.dataFinalizacao.time}" pattern="dd/MM/yyyy"/>
</td>
<td> <a href="mostraTarefa?id=${tarefa.id}"> Alterar </a> </td>
<td> <a href="removeTarefa?id=${tarefa.id}"> Remover </a> </td>
</tr>
</c:forEach>
</table>
<br /> <br />
<a href="novaTarefa">Criar nova tarefa </a>
</body>
[/code]
Como podem ver a essa jsp tem o link para remoção de tarefas: Remover
E esse é o meu controller (Spring MVC)
[code]package br.com.caelum.tarefas.controller;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import br.com.caelum.jdbc.dao.TarefaDAO;
import br.com.caelum.tarefas.model.Tarefa;
@Controller
public class TarefasController {
@RequestMapping("listaTarefas")
public String lista(Model model){
TarefaDAO dao = new TarefaDAO();
model.addAttribute("tarefas", dao.lista());
return "tarefa/lista";
}
@RequestMapping("removeTarefa")
public String remove(Tarefa tarefa) {
TarefaDAO dao = new TarefaDAO();
System.out.println("Algo da tarefa: " + tarefa.toString());
dao.remove(tarefa);
return "redirect:listaTarefas";
}
}
[/code]
Como podem ver nesse controller, no método que mapeia a requisição removeTarefa recebe como parametro um objeto Tarefa, que é usado para realizar o delete no banco a partir do atributo id da Tarefa (tarefa.getId()). Ele funciona certinho.
Ai está a minha grande dúvida: como e onde esse objeto é populado (recebendo o id correto)?
Preciso entender isso pra poder tocar o estudo pra frente.
Se não fui muito claro, é só falar que tento explicar melhor.
Muito obrigado desde já, abraços.