Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

remarques

Problema na passagem de parâmetros

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.