7
respostas

Excluir registro com jquery e java

No Java tenho este método no controle:

 @RequestMapping(value = "/excluir/{id}", method = RequestMethod.GET)
    public ModelAndView excluir(@PathVariable("id") Long id) {
        logger.info("Excluir usuário");
        usuarioServico.excluir(id);
        return redicionamentoListar();
    }

Que chamando direto pelo HTML, funciona:

<a th:href="@{/usuario/excluir/{id}(id=${usuario.id})}" data-toggle="tooltip" data-placement="bottom" title="Excluir"
    data-original-title="Excluir" class=""><i class="fa fa-trash"></i></a>

Agora preciso que funcione após o usuário clicar em OK, conforme informado abaixo.

<button class="demo3">
    <i class="fa fa-trash"></i>
    </button>

Tenho esta classe em css, jquery.

Tenho este script abaixo para mostrar uma paergunta para o usuário, conforme imagem em anexo:

 <script>
        $(document).ready(
            function() {
                $('.demo3').click(
                    function() {
                        swal({
                            title : "Você tem certeza que deseja excluir este registro ?",
                            text : "Você não poderá recuperar este registro após excluir !",
                            type : "warning",
                            showCancelButton : true,
                            confirmButtonColor : "#DD6B55",
                            confirmButtonText : "Sim",
                            closeOnConfirm : false
                        },
                    function() {
                        swal("Excluído!",
                            "Este registro foi excluído.",
                            "success");
                        });
                    });
            });
    </script>

Após clicar em OK, ele mostra a mensagem, mas não exclui o registro.

O que fazer ?

7 respostas

Boa tarde Guilherme, beleza?

Então, o registro não está sendo excluído pois você precisa mandar um request para um método do seu controller que faça realmente a exclusão.

Esse tipo de request onde você tem a resposta sem que a página recarregue chama-se AJAX (Asynchronous Javascript and XML).

Então, antes de mostrar o "Excluído!" você precisa mandar uma requisição ajax, que tenha no corpo da requisição o id do usuário que você quer apagar, para algum método do seu controller que recebe esse id e que realmente faça a operação de excluir.

Espero ter ajudado, qualquer coisa é só postar. Bons estudos!

Sim, queria um exemplo.

Com certeza, vamos la:

Exemplo de uma requisição POST:

$.post( "/pessoa/deleta", {id : id }, 
    function(response) {
        console.log(response);    
    }).done(function(){
    //faz algo caso a requisição tenha funcionado
}).fail(function(data, textStatus, xhr) {
                 //Mostra o status code
                 console.log("error", data.status);
                 //Mostra a mensagem do status
                 console.log("STATUS: "+xhr);
})
});

Explicando um pouco:

"/pessoa/deleta" : url que a requisição vai bater

{id : id } : informação que esta sendo enviada junto com a requisição, no caso o id

response: resposta recebida

done : caso a requisição tenha sido sucesso vai executar a função dentro de done

fail: caso falhe vai executar a função dentro de fail

Agora vc precisa criar um método no controller que esteja mapeado com essa url e que receba um id, ai dentro do seu método você executa a remoção.

Espero ter ajudado

E aonde devo inserir esta chamada no meu código ?

Dentro da segunda função anonima

function() {
    $.post( "/pessoa/deleta", {id : id }, 
            function(response) {
                swal("Excluído!",
                        "Este registro foi excluído.",
                        "success");
                        });   
    });
//resto do código

Dei uma simplificada, mas ficaria mais ou menos assim

Vou testar.

Obrigado

Não consegui implementar.