Erro de Exclusão com JSP e Servlets

11 respostas Resolvido
html5java
A

Pessoal estou iniciando com JSP e Servlets e to criando algo muito muito simples de crud, porem estou com um problema ao excluir um registro que esta em uma tabela, onde tenho um botão para cada linha da minha <table> quero pegar o id e conseguir excluir apenas clicando no botao ao lado como na imagem abaixo porem nao consigo… como fariam? quem poder ajudar agradeço desde já…

11 Respostas

D

Olá,

Creio eu que você já tem o ID sendo exibido no campo código. Então é so montar o link. Por exemplo:

<a href="suaActionParaExcluir?id= ${objeto.id}">Excluir </a>

A

desculpa mas nao entendi o codigo iniciando os estudos agora e to meio perdido pode explicar com mais detalhes?

I

Quando vc fizer o foreach por ex, já coloca o id na linha como nosso amigo disse.

A

certo mas quero so pegar o id correto pra cada linha ao clicar no botao entendeu? onde ja uso do while pra listar tudo na tabela

A

segue o codigo

<table class="table-of-contents bordered striped responsive-table centered hoverable" id="tabela">
            <thead>
                <tr>
                    <th>Código</th>
                    <th>Nome</th>
                    <th>Idade</th>
                    <th>Sexo</th>
                    <th>Opção</th>           

                </tr>
            </thead>

            <%
                Conecta_BD conecta = new Conecta_BD();
                Connection conn;

                conn = conecta.Conexao("plugados");
                conecta.executaSql("select * from aluno order by nome");
                conecta.resultSet.first();

                do {
                    
                    out.println("<tr>");

                    out.println("<td>" + conecta.resultSet.getInt("id_aluno") + "</td>");
                    out.println("<td>" + conecta.resultSet.getString("nome") + "</td>");
                    out.println("<td>" + conecta.resultSet.getString("idade") + "</td>");
                    out.println("<td>" + conecta.resultSet.getString("sexo") + "</td>");

                    out.println("<td><a class='btn btn-large waves-effect red white-text' type='submit'>Excluir</a></td>");

                    out.println("</tr>");

                } while (conecta.resultSet.next());

            %>

        </table>`

ai tentei colocar um id dentro da td pra pegar a linha mas n deu

D
Solucao aceita

out.println("<td><a class='btn btn-large waves-effect red white-text' href= 'actionParaExcluir?id="+ conecta.resultSet.getInt("id_aluno") + " type='submit'>Excluir</a></td>");

D

Alan, aproveite que você está começando agora e estude JSP e JSTL para separar a camada de lógica da apresentação.

Todo esse seu código de manipulação de SQL deveria estar em uma classe Java que iria disponibilizar o objeto para a view(JSP) onde você usaria JSTL com as taglibs para exibir. O código ficaria muito mais limpo e fácil de manter.

Dá uma olhada na apostila FJ-21 da Caelum que é um excelente material.

Att

A

muito obg @danielbussade ta ajudando bastante cara, cara ainda n deu certo cara to jogando pra uma servlet ao clicar no botao la tenho meu sql de delete porem como faço pra passar o mesmo id na servlet pra deletar certinho? segue como ficou meu botao

out.println("<td><a class='btn btn-large waves-effect red white-text' href= './DeletaAluno' id=" + conecta.resultSet.getInt("id_aluno") + " type='submit'>Excluir</a></td>");

A

ai na minha servlet tenho o segundo codigo pra deletar porem nao consigo pegar o id e jogar nesse codigo pra deletar…

` try {
conn = conexao.Conexao(“plugados”);//ESTABELECENDO A CONEXAO

if (conn != null) {//SE EXISTIR A CONEXAO ENTAO FAZ O DELETE
            
            PreparedStatement pst = conn.prepareStatement("delete from aluno where id_aluno=?");

            pst.setInt(1, conexao.resultSet.getInt("id_aluno"));

            pst.execute();

            response.sendRedirect("excluirAluno.jsp");//REDIRECIONA PARA A PAGINA 

        }
    } catch (Exception ex) {
        System.out.println("Erro ao inserir" + ex);
    }

`

D

Então Alan,

Na sua Servlet imagino que você tenha reescrito alguns dos método doGet, doPost ou service. Nesses métodos tem como parâmetros o HttpServletRequest e HttpServletResponse. Então basta pegar os parâmetros que estão foram colocados no HttpServletRequest com o nome que foi passado na url.

Por, exemplo você acessou a URL actionExcluir?id=1, desta forma você recuperaria o id com o seguinte código:

Long id = request.getParamater("id");

Att

A

@danielbussade ja estava fazendo assim e dava erro agora descobri que so faltava fechar a aspa simples kkk mas muito obg pela ajuda e tbm pelo conteúdo sugerido pra estudo é muito bom :smile: qualquer pergunto aqui hehe

Criado 23 de setembro de 2016
Ultima resposta 26 de set. de 2016
Respostas 11
Participantes 3