Problema em um servlet com "equals"

7 respostas
V

estou com esse servlet com o seguinte erro:
“equals” não é uma variável conhecida no contexto atual. recebi várias respostas acerca das Chaves mais não consegui colocar as chaves corretamente.

import java.io.*;
import java.net.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;


/**
 *
 * @author Administrador
 * @version
 */
public class ServletControlador extends HttpServlet {
    
   protected void doGet(HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException {
       processar(request, response);
   }
   
   protected void doPost(HttpServletRequest request, 
           HttpServletResponse response) throws ServletException, IOException {
       processar (request, response);
   }
   
   protected void processar (HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException {
       String operacao = request.getParameter("ope");
       String url = "/index.jsp";
       
       if (operacao.equals("gravar"))   
          url = gravarVisita(request);   
       else if (operacao.equals("rel"))   
          url = gerarRelatorio(request);   
       
       ServletContext sc = getServletContext();
       RequestDispatcher rd = sc.getRequestDispatcher(url);
       rd.forward(request, response);
   }
   
   public String gravarVisita(HttpServletRequest request)
   throws ServletException, IOException {
       VisitaBean vb = new VisitaBean();
       vb.setNome(request.getParameter("nome"));
       vb.setEmail(request.getParameter("email"));
       vb.setComentarios(request.getParameter("comentarios"));
       vb.setData(new Date());
       
       try {
           if(vb.getNome().trim().length() == 0 ||
                   vb.getEmail().trim().length() == 0 ||
                   vb.getComentarios().trim().length() == 0)
                   throw new Exception("Campo obrigatório não informado!");
           
           VisitaDAO.incluir(vb);
       }
       catch (Exception ex) {
           request.setAttribute("erro", ex);
           return "/erro_tratado.jsp";
       }
       
       request.setAttribute("visita", vb);
       return "/sucesso.jsp";
   }
   
   public String gerarRelatorio(HttpServletRequest request)
   throws ServletException, IOException{
       try {
           Vector visita = (Vector)VisitaDAO.gerarRelatorio();
           request.setAttribute("dados", visita);
           return "/livro.jsp";
       }
       catch (Exception ex) {
           request.setAttribute("erro", ex);
           return "/erro_tratado.jsp";
       }
   }
}

7 Respostas

rafaelglauber
if (operacao.equals("gravar"))
url = gravarVisita(request);
else if (operacao.equals("rel"))
url = gerarRelatorio(request);

ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.forward(request, response);
}

1. use as tags para melhor visualização
2. esse if tá totalmente errado veja a sintaxe dele, pois você nem abre as chaves e depois as fecha.

rodrigoallemand

Não consegui ver nenhum “erro aparente” no seu codigo…
Duas dicas:
Primeira: Na comparação de String, a fim de evitar uma NullPointerException, faça a chamada do método pela String que vc conhece…

if ("rel".equals(operacao)) { //Faz alguma coisa }

Segunda: Sempre que postar seu código aqui no forum, coloque as tags “code” antes e “/code” depois, para que a visualização fique melhor…

rodrigoallemand

Na verdade ele não está totalmente errado… o if pode ou não ter chaves para separar o escopo de execução. O que acontece ai é que ele sempre vai executar apenas uma instrução, não tendo a necessidade de chaves. Masssssssssss, em algumas empresas, os infundados manuais de boas práticas e modelos de codificação dizem que todo if deve ter chaves para delimitar o seu escopo… esses manuais tb dizem que o operador ternário deve ser abolido, fazer o quê…

A chave que fecha o código é do método processar… viu, viniciussspds, como uma simples tag code pode confundir tudo?!?

rafaelglauber

Desculpem o radicalismo do TOTALMENTE, mas é que eu aprecio um código legível, e considero esse “jogo” de chaves importante para uma boa leitura.

:oops:

rodrigoallemand

Com as chaves eu até concordo, o código fica mais “identificavel”… mas discordo totalmente do operador ternário…

//Qual a dificuldade de ler isso "fulano".equals(fulano.getNome()) ? return "O nome está correto" : return "O nome está errado";

V
rafaelglauber:
if (operacao.equals("gravar"))
url = gravarVisita(request);
else if (operacao.equals("rel"))
url = gerarRelatorio(request);

ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.forward(request, response);
}

1. use as tags para melhor visualização
2. esse if tá totalmente errado veja a sintaxe dele, pois você nem abre as chaves e depois as fecha.

Como ciraia a sintaxe, pois não estou conseguindo fazer.

Guilherme_Gomes

Explica direito o que acontece, ele não faz algo? Faz algo errado? Gera erro? Qual?

O seu código está correto ao que parece…

Voce pode pegar o RequestDispatcher pelo HttpServletRequest

Criado 26 de dezembro de 2007
Ultima resposta 26 de dez. de 2007
Respostas 7
Participantes 4