Problema com controle

3 respostas
V

Tenho os eguinte código abaixo:

public Object execute(HttpServletRequest request,
			HttpServletResponse response) {
		
		// dados enviados pelo jsp
		String empresa = request.getParameter("empresa");
		String endereco = request.getParameter("endereco");
		String cidade = request.getParameter("cidade");
		String estado = request.getParameter("estado");
		String cep = request.getParameter("cep");
		String telefone = request.getParameter("telefone");
		String site = request.getParameter("site");
		String email = request.getParameter("email");
		String cnpj = request.getParameter("cnpj");
		String inscricaoEstadual = request.getParameter("inscricaoEstadual");
		String atividadeFim = request.getParameter("atividadeFim");
		String numeroFuncionarios = request.getParameter("numeroFuncionarios");
		String contato = request.getParameter("contato");
		String foneContato = request.getParameter("foneContato");
		String funcao = request.getParameter("funcao");
		String situacao = request.getParameter("situacao");
		String tipo = request.getParameter("tipo")==null?"0":request.getParameter("tipo");
		String pesquisa1 = request.getParameter("pesquisa1");
		String pesquisa2 = request.getParameter("pesquisa2");
		String emailContato = request.getParameter("emailContato");
		
		
		
		// buscar usuario da sessao para utilizar os seus atributos no cadastro do registro
		HttpSession session = request.getSession();
		Usuario usuario = (Usuario)session.getAttribute("usuario");		
		
		if (usuario.getPermissao() == "Gerente") {
			String user = request.getParameter("vendedor");
		} else {
			String user = request.getParameter("vendedor");		
		}
		String access = usuario.getPermissao();
		
		try {
					
			CadastroClientesDAO ccDAO = (CadastroClientesDAO)DAOFactory.getDAO("CadastroClientes");
			CadastroClientes cadastroclientes = new CadastroClientes(
					empresa, endereco, cidade, estado,
					cep, telefone, site, email, cnpj,
					inscricaoEstadual, atividadeFim,
					numeroFuncionarios, contato,
					foneContato, funcao,
					situacao, tipo, pesquisa1, pesquisa2, user, access, emailContato);
			ccDAO.insert(cadastroclientes);
			return "redirect:cmd=abrircadastroclientes";
		
		} catch (Exception e) {
			
			log.error(e.getMessage());
			e.printStackTrace();
			request.setAttribute("msg", e.getMessage());
			return "error";
		
		}
	}

Não estou conseguindo usar esse if:

if (usuario.getPermissao() == "Gerente") {
			String user = request.getParameter("vendedor");
		} else {
			String user = request.getParameter("vendedor");		
		}

Ele dá erro no no parametro user:

CadastroClientes cadastroclientes = new CadastroClientes(
					empresa, endereco, cidade, estado,
					cep, telefone, site, email, cnpj,
					inscricaoEstadual, atividadeFim,
					numeroFuncionarios, contato,
					foneContato, funcao,
					situacao, tipo, pesquisa1, pesquisa2, user, access, emailContato);

cannot be resolved

Alguém sabe o pq?

3 Respostas

David

O problema é que você declarou a String user dentro do if e está querendo usá-la fora. Para resolver, declare user em um escopo que possa ser visto por cadastroClientes, por exemplo:

String user = null; if ("Gerente".equals(usuario.getPermissao())) { user = request.getParameter("vendedor"); } else { user = request.getParameter("vendedor"); }

Duas outras observações:

  1. O if e o else fazem a mesma coisa, para que eles existirem?
  2. Mas por que você fez isso?
if (usuario.getPermissao() == "Gerente") {

Por que não fazer algo assim?

if (usuario.temPermissaoGerente()) { ... }

E, dentro de usuário:

public boolean temPermissaoGerente() { return getPermissao() == Permissoes.GERENTE; } onde Permissoes.GERENTE é uma constante que representa o cargo de gerente.

Se usuário for apenas uma classe com atributos e getters/setters você está usando objetos burros na sua aplicação, o que significa que o domínio de sua aplicação foi mal modelado e pode levar a dependências desnecessárias, baixa reusabilidade de código, etc.

Leia esse artigo: http://fragmental.com.br/wiki/index.php?title=Fantoches

thadeurc

O velho… comparar strings com == nao rola né…

usuario.getPermissao().equalsIgnoreCase(“Gerente”)

e outra, vc declarou user dentro do escopo do if… coloca para fora…

String user = null;

if(){

user = …

}

else{

user = …

}

acho q isso resolve.

V

Valeu galera!!

Funcionou direitnho, tinha testado com o equals, mas o problema era o local da declaraçãod a variável.

Criado 25 de abril de 2006
Ultima resposta 26 de abr. de 2006
Respostas 3
Participantes 3