Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] NullPointerException ao buscar empresa.

Olá, estou tendo problemas com a variavel "empresa", quando tento obter o nome da mesma através do método getNome, ele me retorna null, e não o nome da empresa como deveria ser. Por causa disso, estou caindo na NullPointerException quando tento acessar a url "/mostraEmpresa". Porém, não consigo enxergar nenhum erro em meu código, alguém pode me ajudar?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

MostraEmpresaServlet

package br.com.douglas.gerenciador.servlets;

@WebServlet("/mostraEmpresa")
public class MostraEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String paramId = request.getParameter("id");
        Integer id = Integer.valueOf(paramId);

        Banco banco = new Banco();

        Empresa empresa = banco.mostraEmpresa(id);

        System.out.println(empresa.getNome());

        request.setAttribute("empresa", empresa);
        RequestDispatcher rd = request.getRequestDispatcher("/formAlteraEmpresa.jsp");
        rd.forward(request, response);
    }
}

formAlteraEmpresa

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<c:url value="/novaEmpresa" var= "linkNovaEmpresa"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Cadastro</title>
</head>
<body>

    <h1>Insira as novas informações da sua empresa.:</h1>


    <form action="${linkNovaEmpresa}" method="post">

    <p>Nome da Empresa: <input type="text" name="nome" value="${empresa.nome}"></p>
    <p>Data de Abertura:  <input type="text" name="data" value="<fmt:formatDate value="${empresa.dataAbertura}" pattern="dd/MM/yyyy"/>"></p>
    <input type="submit" >

    </form>
</body>

Banco


public class Banco {

    private static List<Empresa> lista = new ArrayList<>();
    private static Integer id = 1;

    static {
        Empresa empresa = new Empresa();
        empresa.setId(id++);
        empresa.setNome("Los Pollos Hermanos");
        Empresa empresa2 = new Empresa();
        empresa2.setId(id++);
        empresa2.setNome("Aperture Science");
        lista.add(empresa);
        lista.add(empresa2);

    }

    public void adiciona(Empresa empresa) {
        empresa.setId(Banco.id++);
        Banco.lista.add(empresa);
    }

    public List<Empresa> getEmpresas() {
        return Banco.lista;
    }

    public void removeEmpresa(Integer id) {

        Iterator<Empresa> it = lista.iterator();

        while (it.hasNext()) {
            Empresa emp = it.next();

            if (emp.getId() == id) {
                it.remove();
            }
        }
    }

    public Empresa mostraEmpresa(Integer id2) {
        for (Empresa empresa : lista) {
            if (empresa.getId() == id) {
                return empresa;
            }
        }
        return null;
    }


}

Empresa

public class Empresa {

    private Integer id;
    private String nome;
    private Date dataAbertura = new Date();

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    public Date getDataAbertura() {
        return dataAbertura;
    }

    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }
}

Omiti os imports porque não dava pra colocar aqui.

2 respostas
solução!

Fala Douglas, de boa ?

Cara tu tá passando o parametro certinho na request ?

Outro detalhe que pode estar dando ruim é nesse método:

ublic Empresa mostraEmpresa(Integer id2) {
        for (Empresa empresa : lista) {
            if (empresa.getId() == id) {
                return empresa;
            }
        }
        return null;
    }

vc recebe o id2 e não usa ele não função, usa o id da classe e acho que isso pode estar dando conflito, passa a usar o id2 e ve se resolve tb.

Opa Matheus, o problema era esse mesmo no método, não percebi que o erro era a ID, muito obrigado, funcionou aqui.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software