Eae pessoal, estou fazendo o exercicio 11.21 da apostila fj21 da caelum, nele eu com apenas um link eu altero o status de uma tarefa não finalizada para finalizada sem mudar de pagina, porém, quando clico no link nada acontece.
<html>
<head>
<meta charset="UTF-8">
<title>Lista de Tarefas</title>
<script type="text/javascript" src="resources/jquery-1.4.2.min.js"></script>
<script type='text/javascript' src='resources/jquery-ui-1.8.2.custom.min.js'></script>
</head>
<body>
<script type="text/javascript">
function finalizaAgora(id){
$.post("finalizaTarefa", {'id' : id}, function(){
$("#tarefa"+id).html("Finalizado");
});
}
</script>
<a href="novaTarefa">Criar nova tarefa</a>
<br>
<br>
<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>${tarefa.dataFinalizacao}</td>
<td><a href="removeTarefa?id=${tarefa.id}">Remover</a></td>
<td><a href="mostraTarefa?id=${tarefa.id}">Alterar</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
@ResponseBody
@RequestMapping("finalizaTarefa")
public void finaliza(Long id) {
JdbcTarefaDao dao = new JdbcTarefaDao();
dao.finaliza(id);
}
public void finaliza(Long id) {
String sql = "UPDATE tarefas SET finalizado = ? WHERE id=?";
try(PreparedStatement stmt = connection.prepareStatement(sql)) {
try {
stmt.setBoolean(1, true);
stmt.setLong(2, id);
stmt.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}catch(SQLException e) {
throw new RuntimeException(e);
}
}