Receber dados de um JSP em um Servlet

Desculpem pela dúvida tão básica, mas acho que é normal para quem está iniciando.

Estou enviando dados de um JSP para um servlet, que processa esses dados e depois retorna o resultado para o JSP.

O problema é que eu não estou conseguindo identificar o conteúdo do campo que estou recebo no servlet, ou seja, ao receber um campo que não foi preenchido no JSP, testo se é nulo (null) para poder limpa-lo (mover “”).

DESCOMP11 = (String)req.getParameter(“txtDESCOMP11”);
if (DESCOMP11 == “”) DESCOMP11 = “”;
GRUPFIM11 = (String)req.getParameter(“txtGRUPFIM11”);
if (GRUPFIM11 == null) GRUPFIM11 = “”;

Teoricamente, a próxima vez que eu fosse testar um dos campos acima (recebidos do JSP), o conteúdo deles deveriam ser igual à “”, uma vez que eles não vieram preenchidos do JSP, certo?

Pois é, acontece que logo após o recebimento dos campos, eu testo para ver se eles tem conteúdo, ou seja, verifico se eles são iguais à “”, e a resposta é negativa, oa campos não são iguais à “”.

O interessante é que mesmo a resposta sendo negativa eu o envio para o browser e não aparece nada.

Em resumo, estou recebendo informações em campo que foi enviado em branco, e esta informação é diferente de “” e null, e não aparece na tela quando tento apresenta-la no browser.

Alguém sabe o que pode estar acontecendo? Alguém tem uma dica?

[quote]DESCOMP11 = (String)req.getParameter(“txtDESCOMP11”);
if (DESCOMP11 == “”) DESCOMP11 = “”;
GRUPFIM11 = (String)req.getParameter(“txtGRUPFIM11”);
if (GRUPFIM11 == null) GRUPFIM11 = “”;
[/quote]

Você não deve comparar o conteúdo de uma String usando “==” como no seu código acima. A classe String fornece um método para comparação que é o .equals(). Recomendo que você faça umas alterações no seu código como:

[code]

if (req.getParameter(“txtDESCOMP11”) != null)
DESCOMP11 = (String)req.getParameter(“txtDESCOMP11”);[/code]

Gustavo GUilherme BacK

Quando for comparar strings, não use suaString = “”, use suaString.equals( “” ).

A explicação disso está num tutorial do guj, vale a pena ler.

ps.: tem uma sessão fórum só para servlets, jsp, etc :slight_smile:

Caro Augusto,

esse tipo de erro deve ser solucionado com a utilização do metodo “equals()” implementado na classe “Object”, portanto, disponiveis para todos os objetos Java.

O objeto “HttpServletRequest”, tem o metodo “getParameter(<nome>)” que retorna o valor do objeto disponivel no pedido Http. Logo o retorno desse metodo é do tipo “String”.

Quando vc faz a comparação de 2 objetos, vc nunca deve utilizar o operador “==”. Ele faz com que a comparação seja feita relativa a memoria em que esta alocado o objeto e não relativo ao seu conteudo.

Vc deve utilizar “equals(objeto)” para comparar 2 objetos.
Ex:

     String nome = request.getParameter("nome");
     if(nome.equals("") || nome.equalsIgnoreCase("andrew") || nome.equals(new String("thomas"))) {
          //.....
     }

A comparação do “equals()” é case-sensitive e vc poderá utilizar o metodo “equalsIgnoreCase()” qdo necessitar comparar(conteudo) por exemplo, um nome, qdo vc nao sabe se o usuario digitou em Maiusculo ou Minusculo.

Vc somente receberá “null” como valor do objeto HTML, caso o objeto(campo) não exista. Será lançado um “NullPointerException”.

Boa Sorte.