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

JSP com modal.

Olá, estou realizando um trabalho para faculdade onde estou desenvolvendo um site de brinquedos. O problema é o seguinte: Na área administrativa, tenho uma tabela que lista todos os brinquedos cadastrados.

<c:forEach items="${brinquedos}" var="brinquedo">
        <tr bgcolor="white">



            <td>${brinquedo.descricao}</td>
            <td>${brinquedo.categoria}</td>
            <td>R$${brinquedo.preco}</td>
            <td><a type="button" class="btn btn-danger" data-toggle="modal"
                data-target="#myModal" >Excluir</a></td>
            <td><a
                href="administracao?action=editar&cod=${brinquedo.cod}"
                class="btn btn-default">Editar</a></td>
        </tr>
    </c:forEach>

Cada linha há um botão correspondente de Excluir e edição. O de Exclusão ativa uma janela modal para confirmar a exclusão.

<div class="modal fade" id="myModal">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">
                            <span aria-hidden="true">x</span>
                        </button>
                        <h3 class="modal-title">Exclusão</h3>
                    </div>
                    <div class="modal-body">
                        <p>Tem certeza que deseja excluir o brinquedo?</p>
                    </div>
                    <div class="modal-footer">
                        <a href="administracao?action=excluir&cod=${brinquedo.cod}"
                            class="btn btn-primary">Excluir</a>
                        <button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
                    </div>
                </div>
            </div>
        </div>

O problema é que essa janela modal não puxa o ${brinquedos.cod} correto. Quando vou clicar no excluir, ele puxa o código do primeiro ou do último registro que é retornado na tabela. Teria como passar um parâmetro para o Modal?

Ou teria uma outra forma mais fácil de solucionar este problema?

obs: Já havia criado um tópico porém em área errada. (Offtopic).

2 respostas

é.. aí vc caiu num problema de front... não sei exatamente como funciona seu modal aí, mas uma solução é vc colocar um atributo data-* para indicar o código e fazer um js para pegar isso na hora do clique no modal. Ex:

    <td><a type="button" class="btn btn-danger" data-toggle="modal"
                data-target="#myModal"  data-cod="${brinquedo.cod}">Excluir</a></td>

Agora quando vc abre o modal, vc sabe exatamente de qual id vc ta falando. Ele só pega o último id, pq é justamente a última iteração do for. Ou se tiver um jeito, vc poderia criar várias divs modais, mas não sei se rola.

solução!

Resolvido.

O código do modal também estava no c:forEach, então a cada loop ele cria um modal.

Setei o código do modal com o código do brinquedo:

<div class="modal fade" id="${brinquedo.cod}">

E a linha da minha tabela com o botão que chama o modal também passei o código como parâmetro:

<td><a type="button" class="btn btn-danger"  data-toggle="modal"
                data-target="#${brinquedo.cod}" >Excluir</a></td>

Agora ele puxa o modal com o código corretamente.

Não é uma solução elegante, porém funcional. Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software