remarques 0 Denunciar post Postado Abril 28, 2008 Tenho a seguinte situação: Um formulário na minha página jsp, conforme trecho abaixo: CODE <form name="categoria" action="IndicadorServlet?action=SEL_CAT" method="post"> ID<input type="text" name="id" id="id" value="" size="5" /><br /> Descrição<input type="text" name="descricao" id="descricao" value="" size="80" /><br /><br /> <a href="IndicadorServlet?action=PESQ_CAT"> <img src="Imagens/salvar.gif" width="16" height="16" alt="salvar"/> </a> <a href="IndicadorServlet?action=SEL_CAT"> <img src="Imagens/search.gif" width="16" height="16" alt="Pesquisar"/> </a> </form> Quando o usuário clica em um dos links acima, é a aplicação é direcionada ao servlet. Entretanto, quando chega no servlet, tento capturar os valores do formulário, mas fazendo um debug observo que o único parâmetro que chega na requisição é o action, que está sendo passado no link. CODE if (req.getParameter("action").equals("SEL_CAT")){ String str = req.getParameter("descricao"); String strId = new String(); strId = req.getParameter("id"); } Já usei isso em diversas ocasiões e funcionou. O que pode estar errado? Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Maio 19, 2008 Boa tarde Remarques. Este erro está ocorrendo porque em uma tag <Form> voce só poderá passar os valores dos parâmetros com comando Submit. Se voce está utilizando um nenu com imagens com links <a href>, neste caso voce terá que optar, ou utilizar o Form com um <input type="Submit"> ou utilizar links <a href> que não funcionam para passar valores de parâmetros do Form, que no caso são os valores dos <input type="text"> É por isso que somente os parâmetros dos Actions nos links <a href> estão passados. Se de outras ocosiões está funcionando, creio eu então que algum código deixou de ser acrescentado ou comentado, código este de javascript. Um abraço Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Maio 19, 2008 Olá Renata, bom seu problema consiste no tipo de requisição enviada ao servlet. Pelo que pode-se ver você não da um submit no formulário, então não é possível capturar os valores preenchidos no formulário. Adicone um botão Submit para o envio da requisição ao formulário e lembre-se, quando a requisição (método de envio do formulário) for POST o método do servlet responsável pelo tratamento é o doPost e se requisição (método de envio do formulário for GET) o método do servlet responsável pelo tratamento é o doGet. Até mais, um grande abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Maio 19, 2008 Boa tarde a todos. A questão não é só acrescentar um botão Submit. O código do jeito que está, ao se clicar em um dos links que invoca um Action na Servlet, esta Action será acionada, contudo o Form junto com seus parâmetros serão perdidos dentro do contexto de requisição. Neste caso, ela pode manter os links <a href> dentro do Form e passar os parâmetros do Form, mudando-se a propriedade Action do Form em uma função JavaScript e ao mesmo tempo acionar o Submit desta forma: <form name="categoria" method="post"> ID<input type="text" name="id" id="id" value="" size="5" /><br /> Descrição<input type="text" name="descricao" id="descricao" value="" size="80" /><br /><br /> <a href="CheckInputText('categoria','PESQ_CAT')"> <img src="Imagens/salvar.gif" width="16" height="16" alt="salvar"/> </a> <a href="CheckInputText('categoria','SEL_CAT')"> <img src="Imagens/search.gif" width="16" height="16" alt="Pesquisar"/> </a> <script> function getElement(id){ var obj = null; if (ie){ obj = document.all[id]; } else { obj = document.getElementById(id); if (obj==null)obj = document.getElementsByName(id)[0]; } return obj; } function checkInputText(action, frm){ var envia = true; for (var y = 0; y < getElement(frm).length; y++){ oinp = getElement(frm)[y]; if (oinp.type=='text' || oinp.type=='select-one' || oinp.type=='password' || oinp.type=='checkbox'){ if ((oinp.value=='' || oinp.value=='0') && oinp.getAttribute('required')=='yes'){ alert(oinp.type+' - '+oinp.name +' - '+'está vazio'); oinp.focus(); envia = false; break; } } } if (envia){ getElement(frm).action = action; getElement(frm).submit(); } } </script> </form> Com esta função, ela verifica se os <input type="text"> estiverem vazios, se estiverem, ele não aciona nem as actions e nem o submit, caso contrário, ela invoca a action do link e ao mesmo tempo aciona o Submit. É só testar. Um abraço Olá, sou eu de novo. Me desculpem, eu inverti os parâmetros da função CheckInputText. O correto é assim: function checkInputText(frm, action){ ...... ...... } Compartilhar este post Link para o post Compartilhar em outros sites