Parametro vazio

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

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.

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

mas obrigado!!!

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

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

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

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.

isso mesmo esta vindo assim acao="";

Luis

[quote=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.[/quote]
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)"

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();

^^

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:

A dica de bKn é boa.

Valeu soro era isso mesmo, mto obrigado!!!

Luis