Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tudo parou de funcionar!! Helpppp

Olá, comunidade, tudo certinho?! Então, tudo por aqui parou de funcionar: Acesso http://localhost:8080/gerenciador/listaEmpresas.jsp e não aparece mais nenhuma empresa na lista; Assim, tbm não aparece o remove que eu havia colocado! Cadastro uma nova empresa por aqui http://localhost:8080/gerenciador/formNovaEmpresa.jsp mas quando dou submit dá erro 500:

Alguém ajuda, estou agarrada aqui! Obrigada :)

CLASSE BANCO:

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();
        empresa.setId(chaveSequencial++);
        empresa2.setNome("Caelum");
        lista.add(empresa);
        lista.add(empresa2);
    }    
    public void adiciona(Empresa empresa) {
        empresa.setId(Banco.chaveSequencial++);
        Banco.lista.add(empresa);
    }    
    public List<Empresa> getEmpresas() {
        return Banco.lista;
    }
}

*FORM NOVA EMPRESA *

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%>
<c:url value="/novaEmpresa" var="linkServletNovaEmpresa"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="${linkServletNovaEmpresa}" method="post">

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

        <input type="submit" />
    </form>

</body>
</html>

** LISTA EMPRESAS.JSP**

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.List, br.com.alura.gerenciador.servlet.Empresa" %>
    <%@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="UTF-8">
<title>Java Standart Taglib</title>
</head>
<body>

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

    Lista de Empresas: <br />

      <ul>
          <c:forEach items="${empresas}" var="empresa">

              <li>${empresa.nome } - <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/> </li>
              <a href="/gerenciador/removeEmpresa?id=${empresa.id}">remove</a>             

          </c:forEach>

      </ul>  

</body>
</html>

*LISTA EMPRESAS SERVLET *

@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"); // já sabe para onde ir
         rd.forward(request, response);
       }
}

*NOVA EMPRESA SERVLET *

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

    protected void service(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);
        //modelo
        Banco banco = new Banco();
        banco.adiciona(empresa);

        //o que o navegador vai mostrar
        PrintWriter out = response.getWriter();
        out.println("<html><body>Empresa " + nomeEmpresa + " cadastrada com sucesso</body></html>");

        response.sendRedirect("listaEmpresas"); //para rediirecionar pelo navegador usamos esse método

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

*REMOVE EMPRESAS SERVLET *

@WebServlet("/removeEmpresa")
public class RemoveEmpresaServlet 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);

        System.out.println(id);
    }
}

RETIREI IMPORTS SÓ PQ NÃO ESTAVA CABENDO AQUI! :))) (Mas acredito que está tudo ok com eles).

1 resposta
solução!

Olá, já consegui resolver!

Haviam dois erros. Vou colocar aqui para ajudar alguém caso venham a errar no mesmo que eu:

Em listaEmpresa.jsp eu havia fechado a tag da lista no local errado, o correto era:


<li>
            ${empresa.nome } - <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/> 
            <a href="/gerenciador/removeEmpresa?id=${empresa.id}">remove</a>  
</li>

E na classe Banco, eu estava setando o id da empresa 2 vezes e não o da empresa2. Corrigido fica assim:

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

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