Valor radio button de JSP para servlet [RESOLVIDO]

Olá pessoal,

Tenho uma JSP na qual constam alguns radiobuttons. Eles são criados através de um [color=blue]foreach [/color]em JSTL conforme código abaixo:

.
  .
    .
<tr>
   <td>

        <c:forEach items="${lista}" var="cat">
              <input id="alinhaEsquerda" type="radio" name="grupo2" value="${cat.conta}" onClick="esconderCampo(this)"><p id="formataTexto">Conta: ${cat.conta} -- Saldo: ${cat.saldo}</p><br>
        </c:forEach> 
              <input id="alinhaEsquerda" type="radio" name="grupo3" value="Outra" onClick="mostraCampo(this)" checked><p id="formataTexto"> Outra </p> <br> 
              <input id="alinhaEsquerdaCampo" type="text" name="conta" value="" style="width:100px">

   </td>
</tr>
     .
   .
. 

Quero passar o valor do radio button selecionado para a SERVLET, porém ja tentei de tudo e o valor não vai (a servlet recebe [color=blue]null[/color]). O código da minha SERVLET está abaixo:

.
  .
    . 
            String strContaOrigem = request.getParameter("Grupo2");
            String strContaDestino = request.getParameter("Grupo3");
            String strContaDestino1 = request.getParameter("conta");
            String strValor = request.getParameter("valor");
    .
  .
.

Já procurei em diversos lugares mas não encontrei a solução.

Obrigado.

O método usado para isso é o metodo que voce esta usando, acredito que provavelmente não está dentro de um “form”, no seu jsp, eu testei aqui, pois fazia tempo que não usava Servlet “puro”, e funcionou tranquilamente, veja meu codigo, lembrando que o import da jstl no jsp está diferente do seu, pois eu uso outra implementação:


package core;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CoreServlet
 */
public class CoreServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CoreServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			
		
		String valor = request.getParameter("grupo2");
		System.out.println(valor);
		Conta c1 = new Conta();
		Conta c2 = new Conta();
		c1.setConta("123");
		c2.setConta("324");
		
		c1.setSaldo("1000");
		c2.setSaldo("2000");
		
		List&lt;Conta&gt; lista = new ArrayList&lt;Conta&gt;();
		
		lista.add(c1);
		lista.add(c2);
		
		request.setAttribute("lista",lista);  
		getServletConfig().getServletContext().getRequestDispatcher(
	         "/contas.jsp").forward(request,response);
	}

}

package core;

public class Conta {
	private String conta;
	public String getConta() {
		return conta;
	}
	public void setConta(String conta) {
		this.conta = conta;
	}
	public String getSaldo() {
		return saldo;
	}
	public void setSaldo(String saldo) {
		this.saldo = saldo;
	}
	private String saldo;
	
}

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;JSTL Simple Conditional Execution Example&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="#FFFFcc"&gt;
	&lt;form action="CoreServlet"&gt;
	&lt;h1&gt;For Loop in JSTL&lt;/h1&gt;
	&lt;c:forEach items="${lista}" var="cat"&gt;
		&lt;input id="alinhaEsquerda" type="radio" name="grupo2"
			value="${cat.conta}" onClick="esconderCampo(this)"&gt;
		<p >Conta: ${cat.conta} -- Saldo: ${cat.saldo}</p>
		<br>
	&lt;/c:forEach&gt;
	&lt;input type="submit" value="enviar"&gt;
	&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Confira se o grupo de rádios está dentro de um form, e veja também se não tem nenhum java script com disabled sendo aplicado, poste ae depois se deu certo, abraço.
Ah, adquira o livro Use a Cabeça Servlets e JSP, acabei de consultá-lo para conferir como é usado o método getParameter(String x).

ribclauport,

Muito obrigado por seu retorno…
Então, meus radiobuttons estão dentro de um form (abaixo). Este meu form tem bastante informação, não se isso pode influenciar.
Enfim, depois de muito me quebrar decidi passar as informações para um select (combobox) e desta forma as informações chegam à SERVLET. Quanto ao livro eu já o tenho, porem não consegui ler muito. Só li os três primeiros capítulos.

<%@page import="java.util.List,com.ib.beans.consulta"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
    <head>
        <title>Inclusão</title>   
        <script type="text/javascript" src="js/jquery.js"> </script>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <script type="text/javascript">
            $(document).ready(function() {
                $("#alinhaEsquerdaCampo").hide(1200);
            });
        </script>

        <script>
            function setarValor(){
                var valor = transferencia.contaOrigem.value;
                alert(valor);         
            }
        </script>    


    </head>
    <body>
        <!DOCTYPE html>
    <script type="text/javascript" src="js/escondeCampo.js"></script>
    <script type="text/javascript" src="js/jquery.js"> </script>

    <div id="form_contact">
        <br>

        <form name="transferencia" action="ControladoraServlet?action=verificarContaTransferencia" method="POST">

            <fieldset><legend class="texte_legende">Selecione a sua conta</legend>

                <div id="extrato"> 
                    <table border="0" width="190">
                        <tr>
                            <td>

                                <select id="contaOrigem" name="contaDeOrigem" onblur="setarValor()"> <!-- Aqui passei pra combobox -->
                                    <c:forEach items="${lista}" var="cat">
                                        <option value="${cat.conta}" selected="selected" >Conta: ${cat.conta} - Saldo: ${cat.saldo}</option> 
                                    </c:forEach> 
                                </select> 

                                <c:forEach items="${lista}" var="cat">
                                    <input type="hidden" id="saldo" name="saldoSelecionado" value="${cat.saldo}">
                                </c:forEach>
                                    
                            </td>
                        </tr>                                           
                    </table>
                </div>
            </fieldset>
            <br>
            <fieldset><legend class="texte_legende">Para a conta</legend>
                <div id="extrato">
                    <table border="0" width="190">
                        <tr>
                            <td>

                                <select name="contaDestino" onchange="mostraCampo(this)">                            
                                    <c:forEach items="${lista}" var="cat">
                                        <option value="${cat.conta}" selected="selected">Conta: ${cat.conta} - Saldo: ${cat.saldo}</option>                                      
                                    </c:forEach> 
                                    <option value="0000">Outra conta</option>
                                </select> 
                                
                                <br>
                                <br>                             
                                <input id="alinhaEsquerdaCampo" type="text" name="contaDestino1" value="0">

                            </td>
                        </tr>                  
                    </table>
                </div>
            </fieldset>        
            <br>
            <fieldset><legend class="texte_legende">Valor da transferência</legend>
                <div id="extrato">
                    <table cellpadding=5 cellspacing=0 border="0">
                        <tr>
                            <td>
                                <strong>Valor em R$:</strong>
                            </td> 
                        </tr>
                        <tr>
                            <td><input type="text" name="valorTransferencia" value="" style="width:100px"></td>  
                        </tr>
                        <tr>
                            <td align="right" colspan="2">
                                <input type="submit" name="btnOK" value="Consolidar" style="width:100px; color:#419be8">
                            </td>
                        </tr>
                    </table>
                </div>
            </fieldset>
        </form>    
    </div>
</body>
</html>

Vlw…

Por favor teria como colocar seu código inteiro do servlet e do jsp para eu analisar, pois fiquei curioso, tenho certeza que deve ser outro o erro, por exemplo algum java script ou algum erro de id duplicado, enfim… gostaria muito de encontrar o erro com sua cooperação, pois veja, e se voce tivesse seguindo uma especificação e o cliente quisesse mesmo os radio buttons?

Você não pode deixar esse tipo de coisa passar em branco!

Aguardo.

ribclauport,
Sempre penso como você…não desisto facilmente justamente pelo motivo que vc comentou: “que tal que o cliente queira aquela implementação”, porém como estava curioso pra ver se o fluxo de informação ia funcionar, decidi trocar o componente.
Enfim, decidi voltar para os radio buttons. Segue abaixo o código da minha SERVLET. Não repare no tamanho, pois estou usando apenas uma SERVLET para o projeto inteiro. O codigo da SERVLET que recebe quando submeto da minha JSP está bem em baixo.

package com.ib.Controladora;

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

import com.ib.beans.criarusuario;
import com.ib.beans.consulta;
import com.ib.beans.transferencia;
import com.ib.consultaDAO.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;


@WebServlet(name = "ControladoraServlet", urlPatterns = {"/ControladoraServlet"})

public class ControladoraServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String action = request.getParameter("action");
        

//----------------------------------testa login-------------------------------------------------        
        if (action.equals("index")) {
            try {
                String usuario = request.getParameter("login");
                String senha = request.getParameter("senha");                
                float codigo = ValidaUsuarioDAO.verificaUsuario(usuario, senha);
                if (codigo != -1) {
                    HttpSession session = request.getSession(true);
                    session.setAttribute("login", usuario);
                    RequestDispatcher rd = request.getRequestDispatcher("/loginCerto.jsp");
                    rd.forward(request, response);
                }
                else {
                    RequestDispatcher rd = request.getRequestDispatcher("/loginErrado.jsp");
                    rd.forward(request, response);
                }
            }
            catch(Exception e){
                System.out.println("Erro" + e);
            }
        }
        
//----------------------------cria usuario-----------------------------------------------------------        
        else if (action.equals("abrasuaconta")) {
            String strTpConta = request.getParameter("GrupoNovoCliente");
            String strCpf = request.getParameter("cpf");
            String strCnpj = request.getParameter("cnpj");
            String strRg = request.getParameter("rg");
            String strSenha = request.getParameter("senha");
            String strRenda = request.getParameter("RendaBruta");
            String strNome = request.getParameter("NomeNovoCliente");
            String strSobrenome = request.getParameter("SobrenomeNovoCliente");
            String strDtnasc = request.getParameter("dataNascimento");
            String strCep = request.getParameter("cep");
            String strRua = request.getParameter("RuaNovoCliente");
           // String strNumero = request.getParameter("NumeroNovoCliente");
            String strTel = request.getParameter("telefoneResidencial");
            String strTel2 = request.getParameter("telefoneCelular");
            String strEmail = request.getParameter("email");
            String strCpfRep = strCpf.replace(".", "");
            String strCnpjRep = strCnpj.replace(".","");
            String strCepRep = strCep.replace("-", "");
            String strRgRep = strRg.replace("-", "").replace(".", "");
            //String strRendaRep = strRenda.replace(",", "");
            String strTelRep = strTel.replace("(","").replace(")", "").replace("-", "");
            String strTel2Rep = strTel2.replace("(","").replace(")", "").replace("-", "");  
            
            criarusuario p = null;
            try {
                
                /*out.print("<h2>"+strTpConta+"</h2>");
                out.print("<h2>"+strCpfRep+"</h2>");
                out.print("<h2>"+strCnpjRep+"</h2>");
                out.print("<h2>"+strRgRep+"</h2>");
                out.print("<h2>"+strSenha+"</h2>");
                out.print("<h2>"+strRenda+"</h2>");
                out.print("<h2>"+strNome+"</h2>");
                out.print("<h2>"+strSobrenome+"</h2>");
                out.print("<h2>"+strDtnasc+"</h2>");
                out.print("<h2>"+strCepRep+"</h2>");
                out.print("<h2>"+strRua+"</h2>");
                out.print("<h2>"+strNumero+"</h2>");
                out.print("<h2>"+strTelRep+"</h2>");
                out.print("<h2>"+strTel2Rep+"</h2>");
                out.print("<h2>"+strEmail+"</h2>");*/
                  
                
                p = preencherPessoa(strTpConta, strCpfRep, strCnpjRep, strRgRep, strSenha, strRenda, strNome, strSobrenome, strDtnasc, strCepRep, strRua, strTelRep, strTel2Rep, strEmail);
                criarusuarioDAO pessoaDao = new criarusuarioDAO();
                pessoaDao.inserir(p);
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/index.jsp");
                rd.forward(request, response);

            } catch (Exception e) {
                out.println(e.getMessage());

            }                           
        }
    
//--------------------------------consulta saldo------------------------------------------------------
        else if (action.equals("consultaSaldo")) {
            try {
                HttpSession session = request.getSession();
                String usuario = (String)session.getAttribute("login");  
                consultaDAO catDao = new consultaDAO();
                List<consulta> lista = catDao.retornarTodos(usuario);
                request.setAttribute("lista", lista);
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/telaconsulta.jsp");
                rd.forward(request, response);
            } catch (Exception e) {
                out.println("erro " + e.getMessage());
            }
        }
        
//---------------------------mata sessao--------------------------------------------------------------
        else if (action.equals("mataSessao")) {
            try {
                HttpSession session = request.getSession();
                session.invalidate();               
                
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/index.jsp");
                rd.forward(request, response);
            } finally {
                out.close();
            }
        } 
        
//---------------------------Transferencias------------------------------------------------------------
        else if (action.equals("transferenciaEntreContas")) {
            try {
                TransferenciasDAO transDAO = new TransferenciasDAO();
                List<consulta> lista = transDAO.retornaContas();
                request.setAttribute("lista", lista);
                
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/transferenciaEntreContas.jsp");
                rd.forward(request, response);
            } finally {
                out.close();
            }
        }
        
        
//---------------------------verificarContaTransferencia----------------------------------------------- 
        else if (action.equals("verificarContaTransferencia")) {
            
            String strContaOrigem = request.getParameter("contaOrigem");
            String strContaDestino = request.getParameter("contaDestino");
            String strContaDestino1 = request.getParameter("contaDestino1");
            String strValor = request.getParameter("valorTransferencia");
  
            transferencia trans = null;
            
            trans = preencherTransferencia(strContaOrigem, strContaDestino, strContaDestino1, strValor);
            
            /*try {
                TransferenciasDAO transDAO = new TransferenciasDAO();
                List<consulta> lista = transDAO.retornaContas();
                request.setAttribute("lista", lista);*/
                
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/loginCerto.jsp");
                rd.forward(request, response);
            //} finally {
            //    out.close();
            //}
        }
        
    
//---------------------------metodo para cadastrar pessoa---------------------------------------------- 
   }       
        private criarusuario preencherPessoa(String strTpConta, String strCpfRep, String strCnpjRep,
                                            String strRgRep, String strSenha, String strRendaRep, String strNome,
                                            String strSobrenome, String strDtnasc, String strCepRep, String strRua,
                                            String strTelRep, String strTel2Rep, String strEmail) {
            criarusuario p = new criarusuario();
            SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
            p.setTp_conta(strTpConta);
            p.setCpf(strCpfRep);
            p.setCnpj(strCnpjRep);
            p.setRg(strRgRep);
            p.setDsc_pwd(strSenha);
            p.setRenda(Double.parseDouble(strRendaRep));
            p.setNome(strNome);
            p.setSobrenome(strSobrenome);
            p.setCep(strCepRep);
            p.setRua(strRua);
            //p.setNumero(Integer.parseInt(strNumero));
            p.setTel(strTelRep);
            p.setTel2(strTel2Rep);
            p.setEmail(strEmail);
            try {
               Date date = format.parse(strDtnasc);
               p.setDt_nasc(date);
            }
            catch (Exception e) {
                System.out.println("Deu erro na data");
            }
            return p;
        }

        
//---------------------------metodo para transferencia----------------------------------------------        
        private transferencia preencherTransferencia(String contaOrigem, String contaDestino, String contaDestino1, String valor){ 
        
            transferencia trans = new transferencia();           
            
            trans.setContaOrigem(Integer.parseInt(contaOrigem));        PARTE DA SERVLET QUE USO QUANDO SUBMETO DA MINHA JSP
            trans.setContaDestino(Integer.parseInt(contaDestino));
            trans.setContaDestino1(Integer.parseInt(contaDestino1));            
            trans.setValor(Float.parseFloat(valor));
            
            return trans;
            
        }
                
                
                
                
                
                
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
    
}

Agora, o código da minha JSP ta uma zona, pois ontem a noite comecei a colocar um monte de campos para testar…vou dar uma arrumada e posto em outro post…
Cara, muito obrigado pelo seu auxílio…

Abraço…

ribclauport,
vc não vai acreditar…arrumei meu código bonitinho e agora tudo ta funcionando…rsssss
De qq forma segue minha jsp completa abaixo:

<%@page import="java.util.List,com.ib.beans.consulta"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
    <head>
        <title>Inclusão</title>   
        <script type="text/javascript" src="js/jquery.js"> </script>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <script type="text/javascript">
            $(document).ready(function() {
                $("#outraContaDestino").hide(50);
            });
        </script>

        <script>
            function setarValorOrigem(saldo){
                var x = saldo;
                transferencia.saldoOrigem.value = x;
                alert( transferencia.saldoOrigem.value);
            }
            
            function setarValorDestino(saldo){
                var x = saldo;
                transferencia.saldoDestino.value = x;
                alert( transferencia.saldoDestino.value);                
            }
            
        </script>    


    </head>
    <body>
        <!DOCTYPE html>
    <script type="text/javascript" src="js/escondeCampo.js"></script>
    <script type="text/javascript" src="js/jquery.js"> </script>

    <div id="form_contact">
        <br>

        <form name="transferencia" action="ControladoraServlet?action=verificarContaTransferencia" method="POST">

            <fieldset><legend class="texte_legende">Selecione a sua conta</legend>

                <div id="extrato"> 
                    <table border="0" width="190">
                        <tr>
                            <td>

                            <c:forEach items="${lista}" var="cat">                                        
                                <input type="radio" name="contaOrigem" value="${cat.conta}" onclick="setarValorOrigem('${cat.saldo}')">Conta: ${cat.conta} - Saldo: ${cat.saldo}<br>
                            </c:forEach> 
                                <input  type="text" id="saldo1" name="saldoOrigem" value="" >

                            </td>
                        </tr>                                           
                    </table>
                </div>
            </fieldset>
            <br>
            <fieldset><legend class="texte_legende">Para a conta</legend>
                <div id="extrato">
                    <table border="0" width="190">
                        <tr>
                            <td>
                                   
                            <c:forEach items="${lista}" var="cat">                                        
                                <input type="radio" name="contaDestino" value="${cat.conta}" onclick="setarValorDestino('${cat.saldo}')">Conta: ${cat.conta} - Saldo: ${cat.saldo}<br>                                    
                            </c:forEach> 
                                <input type="radio" name="contaDestino" value="Outra" onclick="mostraCampo(this)">Outra<br>                                    
                                    <input id="outraContaDestino" type="text" name="contaDestino1" value="0"><br>
                                    <input type="text" name="saldoDestino" value="">

                            </td>
                        </tr>                  
                    </table>
                </div>
            </fieldset>        
            <br>
            <fieldset><legend class="texte_legende">Valor da transferência</legend>
                <div id="extrato">
                    <table cellpadding=5 cellspacing=0 border="0">
                        <tr>
                            <td>
                                <strong>Valor em R$:</strong>
                            </td> 
                        </tr>
                        <tr>
                            <td><input type="text" name="valorTransferencia" value="" style="width:100px"></td>  
                        </tr>
                        <tr>
                            <td align="right" colspan="2">
                                <input type="submit" name="btnOK" value="Consolidar" style="width:100px; color:#419be8">
                            </td>
                        </tr>
                    </table>
                </div>
            </fieldset>
        </form>    
    </div>
</body>
</html>