Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de Desenvolvendo aplicações Web com Spring MVC, no exercício do capítulo Redirecionando requisições.

Boa noite, Escrevi o metodo para remover a conta da mesma forma que foi passado, porem meu objeto nao é populado automaticamente com o id da conta vindo da JSP, quando eu tento chamar "mostraConta?id=${conta.id}" . Meu objeto conta sempre fica null. Existe alguma outra forma de recuperar os dados?

@RequestMapping("/removeConta")
    public String remove(Conta conta) {
        ContaDAO dao = new ContaDAO();
        dao.remove(conta);
        return "redirect:listaContas";
    }
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
    <table style="height: 10px; width: 775px;" border="1">
        <tr>
        <th>Código</th>
        <th>Descrição</th>
        <th>Valor</th>
        <th>Tipo</th>
        <th>Paga?</th>
        <th>Data de pagamento</th>

        </tr>

        <c:forEach items="${contas}" var="conta">
        <tr>
            <td>${conta.id}</td>
            <td>${conta.descricao}</td>
            <td>${conta.valor}</td>
            <td id="tarefa_${conta.id}">
            <c:if test="${conta.paga eq false}">
            Não paga
            </c:if>
            <c:if test="${conta.paga eq true }">
            Paga!
            </c:if>
            </td>
            <td><fmt:formatDate value="${conta.dataPagamento.time}" pattern="dd/MM/yyyy"/></td>
            <td><a href="removeConta?conta.id=${conta.id}">Remover</a></td>
            <td><a href="mostraConta?id=${conta.id}">Alterar</a></td>
        </tr>     
        </c:forEach>
    </table>

</body>
</html>
3 respostas

Como está o seu método que alimenta essa pagina JSP? coloque o código.

Desta forma,

@RequestMapping("listaContas")
    public ModelAndView lista() {
    ContaDAO dao = new ContaDAO();
      List<Conta> contas = dao.lista();

      ModelAndView mv = new ModelAndView("conta/lista");
      mv.addObject("contas", contas);
      return mv;
    }

o metodo acima popula o objeto e chama a pagina. entao a jsp demontra corretamente os dados, mas ao clicar em remover, o metodo na controller nao popula o objeto.

solução!

Pesquisando um pouco na internet, achei essa forma de recuperar alguma informação passada por parametro: (criei um outro controller pra poder mexer)

@RequestMapping("/removeUsuario/{login}")
    public String deletaUsuario(@PathVariable("login") String login, Model model) {

        UsuarioDAO dao = new UsuarioDAO();
        Usuario usuario = new Usuario();
        usuario.setLogin(login);
        dao.deleta(usuario);

        return "redirect:/usuarios"; 

    }

e agora pela jsp eu mando:

 <td><a href="removeUsuario/${usuario.login}">Remover</a></td>