1
resposta

Java arquivo jsp com onclick, o java não vai direito

eu preciso saber a maneira correta de inserir código java no onclick do jsp, por enquanto tá assim

<label onclick="<%
                            System.out.println("listaaa - "+lista_fk_);

                               if(lista_fk_.indexOf(p.getId()) < 0){
                                   lista_fk_.add(p.getId());
                                   configDao.setLista_FK_alowed(p.getId());
                               }else{
                                   lista_fk_.remove(lista_fk_.indexOf(p.getId()));
                                   configDao.remove_from_lidt_fk(p.getId());
                               }

                            %>">
                            <input <%=checked %> type="checkbox" style="width: 2rem; height: 2rem; padding: 0.1rem" value=<%= p.getId() %>  /> <%= p.getNome() %>
                        </label>

mas desse jeito o código dentro do onclick executa sozinho, n sei se é por estar dentro de um laço aqui está um pedaço um pouco maior do código

<ul id="lista-pastas" style="display: none; list-style: none; background: #000000a6; width: 50vw">
                <%
                    for(pasta p : lista){
                %>
                    <% 
                    String checked = "";
                    if(lista_fk_.size() > 0){
                        if(lista_fk_.indexOf(p.getId()) != -1){

                        }else{
                            checked="checked";
                        }
                    }
                    %>
                    <li style="border-bottom: 1px solid #eee; padding: 20px; color: #eee" >
                        <label onclick="<%
                            System.out.println("listaaa - "+lista_fk_);

                               if(lista_fk_.indexOf(p.getId()) < 0){
                                   lista_fk_.add(p.getId());
                                   configDao.setLista_FK_alowed(p.getId());
                               }else{
                                   lista_fk_.remove(lista_fk_.indexOf(p.getId()));
                                   configDao.remove_from_lidt_fk(p.getId());
                               }

                            %>">
                            <input <%=checked %> type="checkbox" style="width: 2rem; height: 2rem; padding: 0.1rem" value=<%= p.getId() %>  /> <%= p.getNome() %>
                        </label>
                    </li>

                <% } %>
                </ul>
1 resposta

Olá! Pelo que entendi, você está tendo problemas com o código Java dentro do onclick do seu arquivo JSP. É importante lembrar que o código Java dentro do onclick é executado no lado do servidor, enquanto o código JavaScript é executado no lado do cliente.

Uma possível solução seria separar o código Java do onclick e colocá-lo em um método na classe Java correspondente. Em seguida, chame esse método no onclick. Dessa forma, o código Java será executado corretamente.

Por exemplo, você poderia criar um método na sua classe Java assim:

public void atualizarListaFk(int id) {
    System.out.println("listaaa - " + lista_fk_);

    if (lista_fk_.indexOf(id) < 0) {
        lista_fk_.add(id);
        configDao.setLista_FK_alowed(id);
    } else {
        lista_fk_.remove(lista_fk_.indexOf(id));
        configDao.remove_from_lidt_fk(id);
    }
}

E no seu arquivo JSP, você poderia chamar esse método no onclick, assim:

<label onclick="atualizarListaFk(<%= p.getId() %>)">

Espero ter ajudado e bons estudos!