Getparameter - NullPointerException

4 respostas
P

Pessoal bom dia,

Estou fazendo um TCC para a facul. É um sistema bem simples de cadastro de mídias.
Estou fazendo WEB mesmo.

Preciso de uma ajudinha de vocês.

Tenho um form aonde o usuário se cadastra, tudo está funcionando a contento.
Nesse form tenho dois campos de senha, aonde o usuário digita a senha e depois confirma a senha digitada anteriormente.
Então fazendo uma checagem do tipo:

senha = request.getParameter("senha").trim();
confirma = request.getParameter("confirma_senha").trim();

if (senha.equalsIgnoreCase(confirma)

Então caso as senhas digitadas forem iguais, continua com o cadastro, senão estou efetuando o seguinte redirect:

response.sendRedirect("cadastro.jsp?erro=1");

E na minha página cadastro.jsp tenho o seguinte código:

if (request.getParameter("erro").equalsIgnoreCase("1")){
          out.print("<p align=center><font color=red size=06>As senhas digitadas não conferem!</font></p><br><br>");       
       }

Isso funciona bem.
O problema está caso eu acione a página cadastro.jsp sem nenhum parâmetro. Está me retornando um org.apache.jasper.JasperException: java.lang.NullPointerException.
Ou seja, se eu acionar diretamente digamos cadastro.jsp?erro=1 tudo funciona, mas se eu acionar cadastro.jsp sem nada o erro de NullPointer retorna.

Alguém poderia me ajudar?

Obrigado!

4 Respostas

R

faça assim:

if ("1".equalsIgnoreCase(request.getParameter("erro"))) {  
          out.print("<p align=center><font color=red size=06>As senhas digitadas não conferem!</font></p><br><br>");         
}
P

Poxa! funcionou!

Muito obrigado Rodolfo!!

Você poderia dar um explicada nessa solução? Não estou visualizando o erro

F

Olá Primordial!

Primeiramente, por quê você não utiliza um framework MVC para realizar esse trabalho? Trabalhar diretamente com a API de Servlets é muito trabalhoso e nada produtivo. Apenas um conselho!

Vamos ao seu problema:
Você está enviando um request com um formulário vazio ok? Vamos analisar seu código:

senha = request.getParameter("senha").trim();
...

Você está se arriscando muito nessa chamada ao método trim() pois você não tem certeza do que será retornado de getParameter(“senha”), podendo retornar um null e aí você já sabe né?! Invocar um método numa referência nula será retornada uma bela NullPointerException. :cry:

Antes de invocar o método trim(), teste o valor retornado de getParameter(). Abaixo segue um pequeno exemplo do que você pode estar fazendo para melhorar seu código:

senha = request.getParameter("senha");
	confirma = request.getParameter("confirma_senha");
	
	if(senha != null && confirma != null) {
		senha = senha.trim();
		confirma = confirma.trim();
	} else {
		mensagem = "O campo senha ou confirma senha não foi preenchido!";
	}
	...
}

O código acima pode(deve) ser melhorado, porém é apenas uma idéia para você enxergar onde está errando. Novamente falando, os frameworks MVC estão aí para evitar este tipo de situação traumática (contato direto com a API de Servlets). Eles possuem validadores que facilitam este trabalho que no caso aqui estamos fazendo na mão.

Qualquer dúvida, não deixe de postar.

Abraços!

P

Entendi!

Muito obrigado pelas dicas Fabrício. Vou melhorar esse código.

Criado 19 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 4
Participantes 3