Parametro vazio

12 respostas
L

Olá, estou tentando passar parametro do meu JSP para Servlet, no meu JSP tem um botão incluir, quando clicar eu quero que passa um parametro para o Servlet, mas o parametro esta indo vazio, estou fazendo da seguinte forma no meu JSP:

Fiz essa função no JSP

<script type=JavaScript>

function selecionaAcao(valorAcao)

{

document.forms[0].acao.value=valorAcao;
}

No BOTÃO incluir fiz isso
<input type=“hidden” name=“acao” value=“0”/>
<input type=“submit” onclick=“JavaScript:selecionaAcao(‘1’);” value=“Incluir” name=“CmdGravar”/>

NO SERVLET esta dessa forma:

public void redirecionar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException

{

int acao = 0;
if(request.getParameter("acao") != null)
  acao = Integer.parseInt(request.getParameter("acao"));
  
 switch(acao) 
	{
		case 1: 
		incluir(request, response);
		break;
		
		case 2:
		consultaCartorio(request, response);
		break;
		
		case 3:
		excluir(request, response);
		break;
		
		case 4:
		alterar(request, response);
		break;
     
     case 5:
     consultatodos(request, response);
     break;
		

	}

}

onde está o erro???
Obrigado

Luis Rabelo
Cuiabá - MT

12 Respostas

B

Parâmetro vazio você quer dizer que o request.getParameter(“acao”) está null?
Aparentemente não tem nada de errado no seu código. Veja se o browser dá algum erro no rodapé, use o firebug ou dê um alert na function para saber se o js está funcionando. Tire as aspas simples do 1 no onclick.

L

isso mesmo o request.getParameter(“acao”) está null, tirei as aspas e continua do mesmo jeito!!

mas obrigado!!!

soro
if(!request.getParameter("acao").equals(""))
acao = Integer.parseInt(request.getParameter("acao"));
B

soro:
if(!request.getParameter("acao").equals("")) acao = Integer.parseInt(request.getParameter("acao"));
Se, como ele disse, o request.getParameter(“acao”) está nulo, este seu código irá gerar um NullPointerException.

L

Pessoal, acho que o meu problema não está no Servlet, e sim no JavaScript, pois todo esse tratamento que vc’s estão passando eu, já fiz, o problema e que a acao esta indo nula para o servlet!!!

Luis

soro

Inputs vazios em um formulário não retornam null, retornam vazio = “”.
Logo o getParameter retorna um String que contem um valor igual a: “”. Em branco e não null.

L

isso mesmo esta vindo assim acao="";

Luis

B

soro:
Inputs vazios em um formulário não retornam null, retornam vazio = “”.
Logo o getParameter retorna um String que contem um valor igual a: “”. Em branco e não null.

Foi por isso mesmo que eu perguntei, e ele respondeu que estava null.

mude <script type="JavaScript"> para <script type="text/javascript"> e onclick="JavaScript:selecionaAcao('1');" para onclick="selecionaAcao(1)"

rdgms

Amigo esta mesmo chegando a servlet porque com o codigo que você me mandou não vejo como funcionar
não sei neh… mas acho que o js funciona funfa assim:

document.forms[0].action="suaServlet";
document.forms[0].submit();

^^

soro

Quando você submete ele já faz a requição ao servidor e depois atualiza o dado no seu campo.

Você tem que fazer com que quando você clicar no botão ele primeiro atualize e depois que o submit vá.

Como?

Você pode fazer o seguinte no seu javascript, você primeiro faz a alteração do campo, depois faz um IF para ver se o campo já foi alterado e depois faz o submit ir senão, você cancela o submit. :slight_smile:

function selecionaAcao(valorAcao)
{
var formulario = document.forms["idDoForm"];
if (formulario.acao.value == valorAcao) {
 formulario.onsubmit = function(){return true};
} else formulario.onsubmit = function(){return false};

Se não estiver errado, o código java script só vai deixar o submit ser executado se realmente o valor de acao for igual ao valorAcao. :slight_smile:

soro

A dica de bKn é boa.

L

Valeu soro era isso mesmo, mto obrigado!!!

Luis

Criado 23 de julho de 2009
Ultima resposta 23 de jul. de 2009
Respostas 12
Participantes 4