Jquery não esta salvando os valores passados

Boa noite GUJ’S,
estou fazendo meu TG e estou com uma dificuldade, tenho uma pagina de cadastro que contem um campo CNPJ/CPF com um radio onde irá escolher entre um ou outro.

cadastrar.jsp

 <tr>
                
                <td bgcolor ="white">CNPJ <font color="red">*</font> 
                    <input  selected ="selected" type="radio" name="selecao" value="cnpj" class="selecao" />
                                                       
                  CPF: <input type="radio" name="selecao" value="cpf" class="selecao" /></br>
                   <div id="localCampo">
                   
                       <input type="text" id="cnpj" name="cnpj" />;
                                                
                      
           </div>

neste faço a escolha da mascara

<script >
            
            $(document).ready(function(){
               $("#date").mask("99/99/9999");
               $("#phone").mask("(999) 999-9999");
               $("#tin").mask("99-9999999");
               $("#ssn").mask("999-99-9999");
               $("#cnpj").mask("99.999.999/9999-99");
               
               $(".selecao").click(function(){
                   var Campo= $(this).val();
                   var inserirCampo= '<input type="text" id="'+Campo+'" name= "'+Campo+'">';
                   $("#localCampo").html(inserirCampo);
                   $("#cnpj").mask("99.999.999/9999-99");
                   $("#cpf").mask("999.999.999-99");
                   
               })
                   
});

    </script>

até aqui tudo bem
na minha controller tenho
Cadastrar(controller)

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

onde cnpj_cpfPatrocinador o mesmo nome no meu BD, onde irá receber o valor vindo
Então, não estou conseguindo enviar este valor para o BD, me passa null

Tenho que passar o valor ao BD podendo ou não ser passado com a mascara,
tenho ainda uma outra parte, caso eu queira editar…
tenho a;

alterar.jsp

<td bgcolor ="white">CNPJ <font color="red">*</font> 
                    <%
                            Patrocinador patrocinador = (Patrocinador) request.getAttribute("patrocinador");
                            String isCNPJ = "";
                            String isCPF = "";
                            if (patrocinador.getCnpj_cpfPatrocinador().length() > 15){
                                isCNPJ = "checked";
                            } else {
                                isCPF = "checked";
                            }

                        %>
                    <input type="radio" name="selecao" value="cnpj_cpfPatrocinador" class="selecao" <%= isCNPJ %> />
                    CPF: <input type="radio" name="selecao" value="cnpj_cpfPatrocinador" class="selecao" <%= isCPF %> /><br />
                    <div id="localCampo">
                        <input type="text" id="cnpj" name="cnpj" value="${patrocinador.cnpj_cpfPatrocinador}">
                    </div>

Não sei se esta certo porque não esta passando valores na hora de cadastrar.
Agradeço desde já a ajuda.

o cadastrar.jsp tem um cnpj_cpfPatrocinador ?

Não, no cadastrar.jsp só tem

<tr>
                
                <td bgcolor ="white">CNPJ <font color="red">*</font> 
                    <input  selected ="selected" type="radio" name="selecao" value="cnpj" class="selecao" />
                                                       
                  CPF: <input type="radio" name="selecao" value="cpf" class="selecao" /></br>
                   <div id="localCampo">
                   
                       <input type="text" id="cnpj" name="cnpj" />;
                                                
                      
           </div>

em outros campos tenho desta forma

<tr>
                    <td  bgcolor ="white">Nome <font color="red">*</font></td>
                    <td><input type="text" name="nomePatrocinador" size="50" maxlength="50" ></td>
                </tr>
                <tr>
                    <td  bgcolor ="white">Endereço <font color="red">*</font></td>
                    <td><input type="text" name="enderecoPatrocinador" size="50" maxlength="50" ></td>
                </tr>
            

como o do cpf/cnpj é diferente, tem um jquery(mascara) tem estes valores…
não estou sabendo colocar o cnpj_cpfPatrocinador no local exato pra poder receber e enviar pro BD.

Você tem um Controller para cadastrar e um para alterar ou apenas um para os dois?

uma controller pra cada,
uma pra cadastrar

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

//... setando 
patrocinador.setCnpj_cpfPatrocinador(cnpj_cpfPatrocinador);

e uma pra alterar

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

//...setando

patrocinador.setCnpj_cpfPatrocinador(cnpj_cpfPatrocinador);

Vc ta obtendo um parametro enviado chamado cnpj_cpfPatrocinador, correto?

No jsp, tem que ter um name=“cnpj_cpfPatrocinador” pra ser enviado algo com este nome, concorda?

O seu cadastrar.jsp tá confuso. vc tem um campo radio pra selecionar se eh cpf ou cnpj. E depois um campo texto para informar um CPF(se tiver marcado um CPF no radio) ou um CNPJ (para preencher com um cnpj, caso tenha marcado cnpj no radio). É isso mesmo?

então, ai que esta, eu tenho o script que tem a opção do radio, se for cnpj ele abre o textbox com a mascara de cnpj, se for cpf ele faz o mesmo
na minha controller se eu colocar o valor cnpj e fizer o cadastro do cnpj, ele da certo, mais se fizer desta forma e eu marcar o cpf ele me passa null
e vice versa… já tentei colocar o meu cnpj_cpfPatrocinador em varios cantos pra ver se dava certo e não deu até o momento…
não sei se terei que criar uma varialvel pra receber o valor e passar ele depois… não sei…

Vc tem que fazer 1 passo de cada vez pra identificar o problema.

Primeira coisa…

Agora eu entendi que vc insere um campo de acordo com a escolha do radio.

 var inserirCampo= '<input type="text" id="'+Campo+'" name= "'+Campo+'">';  

Mas por que vc tem um campo cnpj declarado no codigo mesmo com essa insercao?

<div id="localCampo">  
     <input type="text" id="cnpj" name="cnpj" />;  
</div>  

Outra coisa, o campo ta sendo inserido corretamente?

Vc pode inspecionar (com firebug por exemplo) esse elemento e ver qual o campo foi gerado, qual id, qual nome? Esta primeira parte ta correta?

Este codigo eu peguei na net, ele faz tudo direito, insere a mascara conforme escolhido,
só o valor que tem que ser guardado ele não da certo…
já tentei mudar este valor da id e colocar o cnpj_cpf_patrocinador mais não vai

<td><div id="localCampo">
                   
                       <input type="text" id="cnpj" name="cnpj" />
                                                
                      
           </div>
                </td>

Olha só…

você entende como vc captura os dados enviados?

O seu controller é uma implementação de HttpServlet?

Vc usa o getParameter como colocou ai em cima pra obter os dados?

O parametro do getParameter ta com o mesmo nome do “name” do elemento?

Se o campo que ta sendo inserido tem name=“qualquercoisa”, o getParameter ta sendo getParameter(“qualquercoisa”) ?

A controller é sim uma implementação HttpServlet, utilizo o getParameter para rceber os dados

public class CadastrarPatrocinador extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String nomePatrocinador = request.getParameter("nomePatrocinador");
        String enderecoPatrocinador = request.getParameter("enderecoPatrocinador");
       [color=red] String cnpj_cpfPatrocinador = request.getParameter("cnpj_cpfPatrocinador");//..<- se eu mudar aqui o valor e colocar cnpj, ele me traz o valor do cnpj [/color]
        System.out.println("Valor: " + cnpj_cpfPatrocinador);//...verificar o que esta me trazendo
        
          String mensagem = null;
        
        Patrocinador patrocinador = new Patrocinador();

        patrocinador.setNomePatrocinador(nomePatrocinador);
        patrocinador.setEnderecoPatrocinador(enderecoPatrocinador);
        patrocinador.setCnpj_cpfPatrocinador(cnpj_cpfPatrocinador);
try {
            GenericDAO dao = new PatrocinadorDAOImpl();
            if (dao.cadastrar(patrocinador)) {
                mensagem = "Patrocinador " + patrocinador.getNomePatrocinador() + " Cadastrado com sucesso!!";
            } else {
                mensagem = "problemas ao cadastrar Patrocinador! Confira os dados digitaos...";
            }
            request.setAttribute("mensagem", mensagem);
            request.getRequestDispatcher("indexAdministrador.jsp").forward(request, response);
        } catch (Exception ex) {
            System.out.println("Problema no Servlet ao cadastrar Patrocinador! Erro: " + ex.getMessage());
        }
    }
 <tr>
                
                <td bgcolor ="white">CNPJ <font color="red">*</font> 
                    <input  selected ="selected" type="radio" name="cnpj_cpfPatrocinador" value="cnpj" class="selecao" />
                                                       
                  CPF: <input type="radio" name="cnpj_cpfPatrocinador" value="cpf" class="selecao" /></br>
                <td><div id="localCampo">
                   
                       <input type="text" id="cnpj" name="cnpj" />
                                                
                      
           </div>
                 </td>
            </tr>

A geração de inserir o campo automática sua está funcionando?

parece que não.

Você tem um campo predefinido

Por isso, quando vc dá um getParameter(“cnpj”) realmente vai funcionar.

A primeira coisa é… quando vc ta clicando no radio, ele ta gerando o campo? Vc sabe olhar via firebug qual o nome e id desse campo que ta sendo gerado?

O problema todo é … não existe <input type="text" name="cpf" /> no seu código. Parece que o jquery não tá gerando ele corretamente.

Quando eu clico no radio ele gera na textbox a mascara, ex: cnpj ele me abre assim no textbox ../-__
ele esta funcionando.

com relação ao firebug eu não sei utiliza-lo, tenho ele na minha maquina mais não utlizo…

Vc utiliza o chrome?
Clica no elemento gerado (no textbox) com botão direito, e depois em inspecionar elemento… após clicar no radio CPF e veja qual o NAME que ele gerou?

Vc tem que entender a logica do programa.

Ele gera um elemento do tipo inputtext, que tem um name. Além disso vc sabe se eh cpf ou cnpj de acordo com o radio.

Entao a logica eh assim…

1- obtem valor do elemento do radio (com isso vc sabe se foi selecionado cpf ou cnpj)
2- testa… se elemento for cpf, obtem um parametro com o nome do elemento gerado do tipo cpf
senao, se for cnpj, obtem um parametro com o nome do elemento gerado do tipo cnpj

Mas faça aí a primeira parte que te disse que chegaremos depois nos passos 1 e 2.

cliquei na radio cpf ele abriu a mascara e eu fiz como solicitou e me apareceu este valor
input#cpf
testei da mesma forma o cnpj e me mostrou
input#cnpj

Isto para o id? ou para o name?
Consegue ver estas duas propriedades ao inspecionar o elemento?

quando eu seleciono a opção desejada ele abre no texbox a mascara, eu clico no textbox com o direito do mouse
inspecionar elemento e ele só me mostra aquele valor, não mais

segue o todo o codigo que peguei, da uma olhada nele, não esta diferente

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="jquery.js" type="text/javascript"></script>
        <script src="jquery.maskedinput.js" type="text/javascript"></script>
        <script >
            $(document).ready(function(){
               $("#date").mask("99/99/9999");
               $("#phone").mask("(999) 999-9999");
               $("#tin").mask("99-9999999");
               $("#ssn").mask("999-99-9999");
               $("#cnpj").mask("99.999.999/9999-99");
               
               $(".selecao").click(function(){
                   var Campo= $(this).val();
                   var inserirCampo= '<input type="text" id="'+Campo+'" name= "'+Campo+'">';
                   $("#localCampo").html(inserirCampo);
                   $("#cnpj").mask("99.999.999/9999-99");
                   $("#cpf").mask("999.999.999-99");
                   
               })
            
});

    </script>
    </head>
    <body>
        
          CNPJ: <input  selected ="selected" type="radio" name="selecao" value="cnpj" class="selecao">
           CPF: <input type="radio" name="selecao" value="cpf" class="selecao"></br>
           <div id="localCampo">
               <input type="text" id="cnpj" name="cnpj">
           </div>
 
    </body>
</html>

Retire

<input type="text" id="cnpj" name="cnpj">

do seu codigo.

Depois, insira o codigo abaixo no controller do cadastrar:

String cnpj_cpf = "";

String tipo = request.getParameter("selecao");
if (tipo.equals("cpf")){
	cnpj_cpf = request.getParameter("cpf");
} else if (tipo.equals("cnpj")){
	cnpj_cpf = request.getParameter("cnpj");
}
System.out.println("cnpj_cpf = " + cnpj_cpf);

e veja se dará algum resultado.