1
resposta

HTTP Status 500

Olá a todos! Não estou conseguindo enxergar onde está o erro. Está dando erro Na linha 18 no foreach e informa que a lista está vazia. Quando entra no navegador e digita o endereço http://localhost:8080/gerenciador/formularioNovaEmpresa.html, funciona normal. Quando preenho os dados ocorre o erro 500. A mensagem de erro está no final do tópico.

Segue os códigos:

código html --> formularioNovaEmpresa.html

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

<form action="/gerenciador/ListaEmpresasServlets" method="post">

   Nome: <input type="text" name="nome"/> 
   CNPJ: <input type="text" name="cnpj"/>
   <input type="submit" />

</form>
</body>
</html>

classe java --> ListaEmpresasServlets.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("/ListaEmpresasServlets")
public class ListaEmpresasServlets extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ListaEmpresasServlets() {
    }

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

        Empresa empresa = new Empresa();
        Banco banco = new Banco();
        String nomeEmpresa = request.getParameter("nome");
        String cnpj = request.getParameter("cnpj");
        empresa.setNome(nomeEmpresa);
        empresa.setCnpj(cnpj);
        banco.adiciona(empresa);

        List<Empresa> lista = banco.getEmpresas();

        //Chamar o jsp
        RequestDispatcher rd = request.getRequestDispatcher("/ListaEmpresa.jsp");
        request.setAttribute("listaDasEmpresas", lista);
        rd.forward(request, response);
    }

}

*arquivo jsp --> ListaEmpresa.jsp *

OBS: Está dando erro nessa linha de comando --> for (Empresa empresa : lista) { O elipse diz que a lista está vazia.

<%@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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>


    <ul>
        <% 
            List<Empresa> lista = (List<Empresa>)request.getAttribute("listaDasEmpresas");

            for (Empresa empresa : lista) {
        %>
            <li>Empresa: <%=empresa.getNome()%>. CNPJ: <%=empresa.getCnpj()%></li>
        <%
            }
        %>
    </ul>
</body>
</html>

classe java --> Banco.java

package br.com.alura.gerenciador.servlet;

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

public class Banco {

    private static List<Empresa> listaEmpresas = new ArrayList<Empresa>();

    public void adiciona(Empresa empresa) {
        listaEmpresas.add(empresa);

    }

    public List<Empresa> getEmpresas(){
        return Banco.listaEmpresas;
    }
}
1 resposta

Olá Danilo, tudo bem? Pelo que entendi, o erro que está ocorrendo é que a lista está vazia na linha 18 do arquivo ListaEmpresa.jsp. Isso pode estar acontecendo porque a lista não está sendo preenchida corretamente na classe ListaEmpresasServlets.java.

Verifique se o método banco.getEmpresas() está retornando a lista correta e se ela está sendo preenchida com as empresas adicionadas no método banco.adiciona(empresa), um breakpoint pode ajudar no debug.

Outra sugestão é verificar se a variável "listaDasEmpresas" está sendo passada corretamente no método request.setAttribute("listaDasEmpresas", lista) na classe ListaEmpresasServlets.java.

Espero ter ajudado e bons estudos!