[RESOLVIDO]Problema ao obter os valores dos checkbox selecionados?

Boa tarde galera do GUJ, estou com um problema, e não consigo resolve-lo.

Eu preencho uma tabela com os usuáriso cadastrados no banco de dados.

e coloco um checkbox para cada linha da tabela.

<%

 HttpSession sessionUsuario = request.getSession(true);
 int w = 0;
 int idUsuario = rsUsuario.getInt(1);
 String nmUser = rsUsuario.getString(2);
  while(rsUsuario.next())
  {
     <tr>  
          <td><input type="checkbox" name="user" id="user<%= rsUsuario.getInt(1)%>" value="<%= rsUsuario.getInt(1)%>" /></td>
          <td>&nbsp;<%= nmUser %>&nbsp;</td>

     </tr>
   w++;

   }
 sessionUsuario.setAttribute("countUsuario", w);

%>

Feito isso, gostaria de obter SOMENTE os valores dos checksbox selecionados, para posteriormente efetuar a exclusão em massa(como nos sistemas de emails).

Até onde eu cheguei foi aqui. mas o array recebe “null()” e não consigo percorrer o vetor.

try
   {
      mode = request.getParameter("mode");

      if(mode != null && mode.equals("delLote"))
      {
       String array[] = request.getParameterValues("emp"); 
       
       for(String s : array)
       {
           out.println(teste);
       } 
                     
      }                        
   }catch(Exception ex)
   {
                    
   }

Ou seja, após selecionar os checkbox e clicar em “Deletar usuários selecionados”, é redirecionado para o mode delLote, que faria a leitura e depois excluiria todos os usuários.

Alguém pode me ajudar em como obter os valos do campo value="", somente dos checkbox selecionados?

Agradeço desde já.

Att.

o nome do seu cheqk é user, então vc precisa dar um request.getParameterValues(“user”)

Correto, mesmo assim o array[] continua recebendo null().

A tabela que exibe os usuários, não está dentro de nenhum form.

isso pode afetar algo?

Help plzzz

Tente isso aqui:

public class Excluir extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        try {
           
            String op[] = request.getParameterValues("user");
                if(deleteInquerito(request,op)!=-1)
                    response.sendRedirect("http://127.0.0.1:8080/usuarios/MeusUsuarios");
                else
                    out.println("<h1>Falha ao apagar os usuarios selecinados</h1>");
      
        } finally { 
            out.close();
        }
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    public int [] convId(String op[])
    {
        int escolha [] = new int[op.length];
        for(int i = 0; i<op.length; i++)
            escolha[i] = Integer.parseInt(op[i]);        
      return escolha;  
    }
    public int deleteInquerito(String[] op) {
        int escolha [] = convId(op);
        Conexao connect = null;
		PreparedStatement prep = null;
        int value = -1;
        String sqlQuery = "DELETE FROM lista_usuario WHERE inquerito_id=?";        
        try {
				connect = new Conexao();
				prep = (PreparedStatement)connect.getConnector().prepareStatement(sqlQuery);                
                    for(int i=0; i<escolha.length; i++)
                    {
                        prep.setInt(1, escolha[i]);
                        prep.execute();
                    }
             value=1;       
        } catch (SQLException ex) {
            value=-1;
            Logger.getLogger(Excluir.class.getName()).log(Level.SEVERE, null, ex);
        }
		finally{
			prep.close();
			connect.close();
		}
       return value;
    }

}

Codigo HTML

<form action="http://localhost:8080/Excluir" method = "post">
   <input type="checkbox" value="Username_1" name="user">Username_1
   <input type="checkbox" value="Username_2" name="user">Username_2
   <input type="checkbox" value="Username_3" name="user">Username_3
   <input type="checkbox" value="Username_4" name="user">Username_4
   <input type="submit" value="Excluir" name="excluir">
</form>

Acho que isso pode te ajudar.

vish, sou iniciante, intende * nenhuma de várias coisas.

qual a diferença do que vc fez pro meu?

coloquei todos os inputs, com seus respectivos valores… o problema está na hora de receber esses valores.
String idUsuarios[] = request.getParameterValues(“user”);

o array está recebendo null(), ou seja, não recebe os valores.

valeu pela ajuda, vou dar uma estudada nisso.

tem que estar dentro do form sim:

<form action="seu_servlet" method="post(get)">

componentes html


botão submit
</form>

lá no seu servlet agora vc vai ver o request preenchido.

esse [ method=“post(get)” ] é padrão?

att.

Ainda esta retornando null();

Tente oberservar a minha situação, eu não consigo ver onde estou errando.

//esse código está no JSP, quando o mode é null
//ou seja, na pagina inicial do jsp.
<%
HttpSession sessionEmpresa = request.getSession(true);
%>
<div id="divUser">
<form action="users.jsp" method="post(get)" enctype="multipart/form-data">

<a href="users.jsp?mode=delLote">Excluir empresas selecionadas</a>
<br />

<table cellpadding="3" border="1">
                    <tr> 
                        <td align="center"><strong><input type="checkbox" id="usersAll" onclick="checkUsers();"/></strong></td>
                        <td align="center"><strong> Nome Usuário</strong></td>                                         
                    </tr>
                <%
              
                while(rsEmpresa.next())
                {
                    int idUser = rsUser.getInt(1);
                    String nmUser = rsUser.getString(2);
                    

                    %>
                    <tr>  
                        <td><input type="checkbox" name="user" id="user" value="<%= rsUser.getInt(1)%>" /></td>
                        <td>&nbsp;<%= nmUser %>&nbsp;</td>                        
                    </tr>
                    <%
                    w++;
                }
             sessionUser.setAttribute("countUser", w);
             %>
</table>
</form>
</div>
//function javascript para selecionar todos os box (funciona normal)
function checkUsers()
{
   var div = document.getElementById("divUser");
   var check = div.getElementsByTagName("input");

   for (i = 0; i < check.length; i++)
   {   
      if(check[i].id.search("user") != -1 && check[i].id != "usersAll")
      {
         check[i].checked = document.getElementById("usersAll").checked;
      }
   }
 }
//esse é o mode, que fica dentro do mesmo jsp. 
//quando clicar no link "Excluir empresas selecionadas"
//começa a executar essa parte do código
//OBS: A todo o momento, o array (selecionados[]) recebe null(), por isso cai no else, e retorna none;
try
   {
      mode = request.getParameter("mode");
      if(mode != null && mode.equals("delLote"))
      {
       String selecionados[] = request.getParameterValues("user");
            
       if (selecionados != null) 
       {
          for (int w = 0; w < selecionados.length; w++) 
          {
             out.println ("<b>"+selecionados[w]+"<b>");
          }
       }
       else out.println ("<b>none<b>");
                     
      }                        
   }catch(Exception ex)
   {
                    
   }

Eu não entendo onde eu estou fazendo errado. isso é algo inexplicavel? huehuehuehue. desculpa a ignorancia mas sou iniciante.

OBS: a única possibilidade que imaginei agora, é que o mode é como se fosse outra página e não recebe os elementos direitos. caso seja isso, o que fazer?

Valeu pela ajuda de todos, e espero muito consiguir resovler esse problema, q ja estou ficando atrasado hehe.

Certo amigo, vou criar o modelo que você vai seguir para realizar essa tarefa fácil veja:

// Seu jsp para enviar o form html para o outro jsp que vai excluir ok!


/**
*fomr.jsp
*/
&lt;%@page import="java.util.HashMap"%&gt;
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
&lt;%@ page import="java.util.*"  %&gt;    
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;.:: FORM Excluir&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form action="excluir.jsp" method = "post"&gt;  
   &lt;input type="checkbox" value="Username_1" name="users"&gt;Username_1<br>  
   &lt;input type="checkbox" value="Username_2" name="users"&gt;Username_2<br>    
   &lt;input type="checkbox" value="Username_3" name="users"&gt;Username_3<br>    
   &lt;input type="checkbox" value="Username_4" name="users"&gt;Username_4<br>    
   &lt;input type="submit" value="Excluir" name="excluir"&gt;  
&lt;/form&gt; 
&lt;/body&gt;
&lt;/html&gt;
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
String[] usuarios = request.getParameterValues("users");   

for(String s : usuarios)  
{  
    out.println(s);  
} 
%&gt;
&lt;/body&gt;
&lt;/html&gt;

Espero ter ajudado agora…
Não tem segredo, o name do ckebox deve ser o mesmo nome no “request.getParameterValues(“nameChekBox”);”
Fallow

ai que está o problema. é simples, e não vejo onde o meu está errado!
e não vejo outra forma de implantar no meu caso.

pois só quero pegar quando chamo o mode=delLote. para dai manipular os valores. (olhando o código fonte da página, os chekbox recebe os values todos direitinhos. eu só não estou conseguindo recebe-los. e necessito receblos dentro do mode delLote. como passar? acho que só pode ser esse o problema, e não sei resolve-lo).

vleu pela ajuda.

você não sabe como fazer como falei? dentro do mesmo arquivo .jsp?

dentro do users.jsp
eu chamo o users.jsp?mode=delLote

<a href="users.jsp?mode=delLote">Excluir empresas selecionadas</a>

dentro do mode delLote, o array não recebe nada. o que pode ser?

[code]try
{
mode = request.getParameter(“mode”);
if(mode != null && mode.equals(“delLote”))
{
String selecionados[] = request.getParameterValues(“user”);

   if (selecionados != null)   
   {  
      for (int w = 0; w < selecionados.length; w++)   
      {  
         out.println ("<b>"+selecionados[w]+"<b>");  
      }  
   }  
   else out.println ("<b>none<b>");  
                   
  }                          

}catch(Exception ex)
{

} [/code]

Boa noite EduFranzoni,

neste seu ultimo post vc disse que está usando um link e por isso não está recebendo os selecionados, não está enviando os dados do form.

:?:

como faço para enviar através do submit?

como faço para apontar para o mode=delLote?

thx. obrigado

Na propria action do form:

[code]

[/code]

ou coloca um input hidden dentro do form:

<input type="hidden" name="mode" value="delLote" />

Muito obrigado meu velho,
Amanhã farei o teste. posto o resultado aqui. volte p/ conferir! hehehe.

Obrigado a todos pela ajuda! da até orgulho de participa desse fórum uahhahuahua.

por nada :!: valeu ate amanha :!:

se vc usar get no method:

servlet?mode=delLote

se vc for usar post:

<input type="hidden" name="mode" value="delLote" >

ha esta diferença no envio das informações.

uma dica: como vc esta utilizando jsp com servlet, faça do jsp sua view e de sua servlet o seu controle, ou seja, tudo o que for de processamento faça na servlet e tudo o que for para sua view use jsp.

Qual foi o nome que vc mapeou sua servlet?(mostre seu web.xml)

<!-- aqui o jsp -->

...
<!-- suaservlete é a url que vc mapeou para uma classe -->
<!-- como eu coloquei o methd post, tive que colocar um type="hidden" para enviar o mode que vc quer utilizar, pode ser feito de outra forma(ajax) mas isto é assunto para uma outra hora ehehe -->

<form action="suaservlet" method="post">
<input type="hidden" name="mode" value="dlLote">
<inputs ....>
<input type="submit">
</form>


qualquer dúvida posta ai.

[quote=rock]Na propria action do form:

[code]

[/code]

ou coloca um input hidden dentro do form:

<input type="hidden" name="mode" value="delLote" />
  1. [/quote]

Cara realmente com o input submit, funcionou!

Mas gostaria de passar sem ser pelo submit, queria que fosse por um link normal. eu não intendi o funcionamento do typy hidden, só ele adiantaria?

att. obrigado

Acredito que a aplicação esteja utilizando um framework mvc, pois o servlet está misturado com o jsp.