Problema com checkbox

2 respostas
M

Pessoal sou bastante leigo ainda em programação web e estou com um problema que não consigo entender(não reparem na "burrice" rs), tenho em uma página(JSP) um formulário para que o usuário possa preencher com seus dados(Nome,Telefone,E-mail e Sexo) e abaixo alguns checkboxes com estilos musicais para que o usuário escolha os de sua preferência(Rock, Pop-Rock,Clássicas,Sertanejo,Jazz), porém quando faço a impressão da página com os dados do usuário no Servlet o resultado dos checkboxes só aparecem se tiverem sidos marcados em sequencia começando a partir do primeiro, e se pular algum só mostram os primeiros,vou explicar melhor:

Página:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Formulário 2</title>
    </head>
    <body>
        <h1 align="center"><b>Formulário</b></h1>

        <form action="../Atividade2" method="get">
        Nome: <input type="text" name="nome"><br>
        Telefone: <input type="text" name="telefone"><br>
        E-mail: <input type="text" name="email"><br><br>
        Sexo:&nbsp; Masculino<input type="radio" name="sexo" value="M"> &nbsp;&nbsp; Feminino<input type="radio" name="sexo" value="M"><br><br>

        <b><i>.::Preferências musicais::.</b></i><br><br>
        <input type="checkbox" name="g1" value="Rock">Rock<br>
        <input type="checkbox" name="g2" value="Pop-Rock">Pop-Rock<br>
        <input type="checkbox" name="g3" value="Classicas">Clássicas<br>
        <input type="checkbox" name="g4" value="Sertanejo">Sertanejo<br>
        <input type="checkbox" name="g5" value="Jazz">Jazz<br><br>

        <input type="submit" value="Enviar">&nbsp;&nbsp;<input type="reset" value="Limpar"><br> 

        </form>
    </body>
</html>

Como vcs podem ver, a ordem dos checkboxes é:

1-Rock
2-Pop-Rock
3-Classicas
4-Sertanejo
5-Jazz

Daí o problema, se eu marcar apenas Rock, imprime Rock normal, se eu marcar Rock,Pop-Rock e Classicas tbm, agora se eu marcar esses 3 e desmarcar Pop-Rock(entre Rock e Classicas) já não imprime mais Clássicas, só Rock.. ou se eu marcar Rock, Pop-Rock e Jazz só imprime até Pop-Rock, para imprimir Jazz tem que marcar todas até o final, entenderam? kk..tipo só ta saindo se tiver marcado na sequencia como se estivesse todos ligados, se quebrar algum do meio o restante abaixo não imprime.

E o Servlet:

package pacote1;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author maickon
 */
public class Atividade2 extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Atividade1</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Dados:</h1>");
            out.println("<b>Nome: " + request.getParameter("nome") + "</b><br>");
            out.println("<b>Telefone: " + request.getParameter("telefone") + "</b><br>");
            out.println("<b>E-mail: " + request.getParameter("email") + "</b><br>");
            if(request.getParameter("sexo").equals("M")){
                out.println("<b>Sexo: Masculino</b><br><br>");
            }
            else{
                out.println("<b>Sexo: Feminino</b><br><br>");
            }
            
            out.println("<b>Gostos Musicais:<br><br>");
            
            if(request.getParameter("g1").equals("null")!= true){
                out.println(request.getParameter("g1") + "<br>");
            }
            if(request.getParameter("g2").equals("null")!= true){
                out.println(request.getParameter("g2")+ "<br>");
            }
            if(request.getParameter("g3").equals("null")!= true){
                out.println(request.getParameter("g3")+ "<br>");
            }
            if(request.getParameter("g4").equals("null")!= true){
                out.println(request.getParameter("g4")+ "<br>");
            }
            if(request.getParameter("g5").equals("null")!= true){
                out.println(request.getParameter("g5")+ "<br>");
            }
            
            out.println("</body>");
            out.println("</html>");
            
        } finally {            
            out.close();
        }
    }

....

2 Respostas

S

if(request.getParameter("g1").equals("null")!= true){ out.println(request.getParameter("g1") + "<br>"); }

mude para

if(request.getParameter("g1") != null ){ out.println(request.getParameter("g1") + "<br>"); }
e ve se funciona

M

Valeu cara! Deu certo sim :slight_smile:

Criado 1 de setembro de 2013
Ultima resposta 1 de set. de 2013
Respostas 2
Participantes 2