3
respostas

http://localhost:8080/gerenciador/mostraEmpresa

Depois que eu removo a empresa, ao tentar ir para a página http://localhost:8080/gerenciador/mostraEmpresa, aparece a mensagem: HTTP Status 500 – Internal Server Error.

listaEmpresas.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ 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" %>

    <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 }"/> 
            <a href="/gerenciador/mostraEmpresa?id=${empresa.id }">edita</a>
            <a href="/gerenciador/removeEmpresa?id=${empresa.id }">remove</a>
        </li>
    </c:forEach>
</ul>

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++);
    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 buscaEmpresaPelaId(Integer id) { 
        for (Empresa empresa : lista) { 
            if(empresa.getId() == id)  {
                return empresa;
        }
    }
    return null;
}

}

MostraEmpresaServlet.java

package br.com.alura.gerenciador.servlet;

import java.io.IOException;

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;

/**

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

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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.buscaEmpresaPelaId(id);

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

      response.getWriter().append("Served at: ").append(request.getContextPath());

      }

}

3 respostas

Olá Bernardo!

O "MostraEmpresa" só deveria ser exibido quando você quer editar uma empresa, correto?

Por qual motivo você gostaria de acessa-la depois de remover uma empresa? (Pergunto isso pra entender melhor o problema).

Um motivo pode também estar ocasionando esse erro é que quando você chama o "MostraEmpresa" você precisa passar o Id da empresa que você quer mostrar e ele não está sendo passado.

Veja se é isso mesmo.

Aguardo seu retorno! ^^

Bernardo, erro 500 indica um erro no seu servidor que processou seu request. Consegue nos passar a exceção do server?

Olá Bernardo!

Conseguiu resolver seu problema?