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

Não Passa o Parametro para o controller

Olá, estou tentando excluir uma conta e lá no controller está chegando nulo o id.

segue o codigo

package br.com.caelum.contas.controller;

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.caelum.contas.dao.ContaDAO;
import br.com.caelum.contas.modelo.Conta;


@Controller
public class ContaController {


    @RequestMapping("conta")
    public String form(){
        return "conta/formulario";
    }

    @RequestMapping("adicionaConta")
    public String adcionaConta(Conta conta){

        ContaDAO contaDAO = new ContaDAO();
        contaDAO.adiciona(conta);

        return "conta/contaAdicionada";
    }


//    @RequestMapping("listaContas")
//    public ModelAndView lista(){
//        
//        ContaDAO contaDAO = new ContaDAO();
//        List<Conta> lista = contaDAO.lista();
//        
//        
//        ModelAndView  modelAndView = new ModelAndView("conta/lista");
//        modelAndView.addObject("listaContas", lista);
//        
//        return modelAndView;
//    }

    @RequestMapping("/removeConta")
    public String remove(Conta conta) {
      ContaDAO dao = new ContaDAO();
      dao.remove(conta);
      return "forward:listaContas";
    }




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

      mv.addAttribute("listaContas", contas);
      return "conta/lista";
    }

}

<%@ 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>
        <th>Ação</th>
        </tr>

        <c:forEach items="${listaContas}" var="conta">
        <tr>
            <td>${conta.id}</td>
            <td>${conta.descricao}</td>
            <td>${conta.valor}</td>
            <td>${conta.tipo}</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>
        </tr>     
        </c:forEach>
    </table>

</body>
</html>
2 respostas

Olá Donald

Para que o spring consiga preencher o id da conta, você precisa enviar um parâmetro na requisição chamado id ao invés de conta.id. O seu link deve ficar da seguinte forma:

Remover

solução!

Parece que o código do link não ficou visível:

<a href="removeConta?id=${conta.id}">Remover</a>