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

Criar nova empresa parou de funcionar

Resolvi ir até o fim pra ver se alguma coisa seria comentada sobre isso, mas não foi o caso.

Revi todas os videos, comparei os codigos e não consegui observar nenhuma diferença.

Banco.java

package br.com.alura.gerenciador.servlet;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Banco {

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

    static {
        Empresa empresa = new Empresa();
        empresa.setId(chaveSequencial++);
        empresa.setNome("Alura");
        Empresa empresa2 = new Empresa();
        empresa2.setId(chaveSequencial++);
        empresa2.setNome("Caelum");
        lista.add(empresa);
        lista.add(empresa2);
    }


    public void adiciona(Empresa empresa) {
        empresa.setId(Banco.chaveSequencial++);
        System.out.println("empresa adicionada");

    }

    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 buscaEmpresaPelaId(Integer id) {

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


}

Empresa.java

package br.com.alura.gerenciador.servlet;

import java.util.Date;

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;
    }


}

ListaEmpresasServlet.java

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

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

        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();
        request.setAttribute("empresas", lista);

        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
        rd.forward(request, response);


    }

}

NovaEmpresaServet.java

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class NovaEmpresaServlet
 */
@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        System.out.println("Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");

        Date dataAbertura = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        request.setAttribute("empresa", empresa.getNome());

        response.sendRedirect("listaEmpresas");

//        //chamar o JSP
//        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas");
//        request.setAttribute("empresa", empresa.getNome());
//        rd.forward(request, response);


    }

}
2 respostas
solução!

formNovaEmpresa.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:url value="/novaEmpresa" var="linkServletNovaEmpresa"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

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

        Nome: <input type="text" name="nome"/>
        Data Abertura: <input type="text" name="data"/>

        <input type="submit"/>

    </form>

</body>
</html>

listaEmpresas.jsp

<%@page import="br.com.alura.gerenciador.servlet.Empresa"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <c:if test="${not empty empresa}">
        Empresa ${empresa} cadastrada com sucesso!
    </c:if>

    Lista de Empresas:

    <ul>
        <c:forEach items="${empresas}" var="empresa">
            <li>${empresa.nome} - <fmt:formatDate value="${empresa.dataAbertura}" pattern="dd/MM/yyyy"/> </li>
            <a href="/gerenciador/mostraEmpresa?id=${empresa.id}">edita</a>
            <a href="/gerenciador/removeEmpresa?id=${empresa.id}">remove</a>
        </c:forEach>
    </ul>

</body>
</html>

Tudo ocorre normalmente, não dá nenhum erro, mas a empresa nova simplesmente não é adicionada.

Sendo mais pontual, parou de funcionar na criação do .java e .jsp para alteração e remoção de empresas da lista. Caso seja necessário, posto o codigo desses arquivos, mas creio que eles não deveriam influenciar.

Lucas, bom dia

È necessário criar na classe Banco a nova empresa. E passando os parâmetros Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E qual msg está mostrando no console da IDE qd vc chamar o endereço no navegador? - http://localhost:8080/gerenciador/listaEmpresas