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

Remover produto

Nos códigos abaixo, utilizando o projeto de exemplo do curso, tento remover um produto, porem fica dando erro, estou cometendo algum erro na hora de fazer a lincagem, mas não encontro o erro? Alguém sabe com concertar?

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="../base.css">
        <title>Lista de Produtos</title>
    </head>
    <body>
        <table class="table table-striped table-hover table-bordered">
            <thead>
                <tr>
                    <th>Remover</th>
                    <th>Nome</th>
                    <th>Valor</th>
                    <th>Quantidade</th>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${produtoList}" var="produto">
                    <tr>
                        <td>
                           <a href="<c:url value="/produto/remove?produto.id=${produto.id}"/>">Remover</a>
                        </td>
                        <td>${produto.nome}</td>
                        <td>${produto.valor}</td>
                        <td>${produto.quantidade}</td>
                    </tr>
                </c:forEach>
            </tbody>
        </table>
    </body>
</html>
    @Path("/produto/remove")
    public void remove(Produto produto){
        EntityManager em = JPAUtil.criaEntityManager();
        ProdutoDao dao = new ProdutoDao(em);
        em.getTransaction().begin();
        dao.remove(produto);
        em.getTransaction().commit();
    }
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Produto remove</title>
    </head>
    <body>
        <h1>Produto removido com sucesso!</h1>
    </body>
</html>
3 respostas
solução!

Oi Tiago,

O erro que aparece no console é um java.lang.IllegalArgumentException: Removing a detached instance Produto?

Se for, você deve primeiro recuperar o produto da base para que ele possa ser gerenciado pelo ORM antes de fazer a remoção.

Se não for, cola a stacktrace completa aqui?

Abraço!

Joviane Fernandes Jardim, pelo q entendi, vc disse que ai passar o id preciso ir no banco, recuperar em produto para removelo. Mas tipo, fiz igual tava na parte "Preciso de ajuda!" e mesmo assim da esse erro, to meio perdido, essa parte não ficou muito clara para mim... Tenho o primeiro código q me da a seguinte pagina

Ao clicar em "Remover" tenho a seguinte pagina com erro

Me parece q estou utilizando o

<td>
   <a href="<c:url value='/produto/remove?produto.id=${produto.id}'/>">Remover</a>
</td>

de forma errada, ou no lugar errado. Porem não entendi muito bem como concerta...

Oi Tiago,

Estranho esse 404... Seu arquivo remove.jsp está dentro de /src/main/webapp/WEB-INF/jsp/produto? Posta seu código completo do controller?

Abraço!