Colegas,
Estou recebendo de minha página jsp valores em um array de strings dessa forma:
String[] confirmados = request.getParameterValues("libera");
Tenho duas dúvidas: Como faço pra checar se o array está NULO ? Estou fazendo assim:
if(confirmados.equals(null))
{
System.out.println("ARRAY VAZIO");
}
Porque ele me gera este erro ??
java.lang.NullPointerException
at equipamentos.Confirmado.doPost(Confirmado.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
Ajudem-me please !
Para verifica se eh null ou nao, faca assim:
if (confirmados == null)
// eh nulo
else
// nao eh nulo
[]'s
Rafael Steil
Apenas complementando sua dúvida Cyber.
O método NullPointerException acontece quando você tenta invocar algum método ou acessar algum atributo de uma variável que não referencia nenhum objeto! (ponteiro nulo)
No seu caso, como a variável “confirmados” recebia um valor null e então o seguinte código era chamado:
confirmados.equals(null)
é como se você chamasse:
null.equals(null)
ou seja, algo totalmente inválido, pois null é uma palavra chave que não aponta para nenhum objeto, não fazendo sentido portanto chamar o método equals(), o que ocasionou a exceção.
A maneira correta de fazer esta verificação é a maneira que foi sugerida pelo colega Rafael.
Espero ter ajudado,
Abraços!!
Uma outra coisa que reparei quando tava mexendo com Servlets ( nao sei se se aplica a JSP, pois nao mexo com ele ) sao as verificacoes para ver se o campo do formulario/url veio com algum valor. Pelo que notei, se algum campo esta no <form> ou eh passado pela URL, porem nenhum valor eh informado, ele vem com o valor “” e nao null. A verificacao somente vai retornar null se o campo nao existir, ou seja, voce tentar verificar uma variavel que realmente nao existe. Por exemplo, considerando a seguinte url:
no Servlet acontece isso:
...
if (request.getParameter("nome") == null)
// NAO vai entrar aqui, pq na verdade 'nome' eh "meuNome"
if (request.getParameter("cidade") == null)
// NAO vai entrar aqui, pq cidade eh ""
if (request.getParameter("idade") == null)
// VAI entrar aqui, pq idade nao foi especificado na URL
e assim por diante. Portanto, teoricamente sempre deveria usar
..
if (request.getParameter("meuCampo") != null && !request.getParameter("meuCampo").equals(""))
// ok, a variavel contem de fato algum valor.
Alguem confirma isso? eu poderia ler a especificacao pra descobrir, de qq maneira, mas creio que alguem ja tenha essa resposta… 
[]'s
Rafael Steil
Seu raciocínio está correto Rafael, se um parametro não existe o método getParameter() realmente retorna nulo. E caso exista, retorna uma String com seu valor (que é “” caso não haja valor especificado como no exemplo que você deu).
Quanto ao teste que você sugeriu:
..
if (request.getParameter("meuCampo") != null && !request.getParameter("meuCampo").equals(""))
// ok, a variavel contem de fato algum valor.
Ele só seria válido se o campo não aceitasse valores nulos, mas lembre-se que pode haver campos de preenchimento opcional, que podem retornar valores vazios (""), neste caso, bastaria apenas testar para verificar se o parametro não é nulo.
Espero ter contribuido.
Abraços!