9
respostas

A lista de empresas nao aparece

bom dia, fiz o import da biblioteca JSTL como descrito, e alterei o html como apontado porem não aparece nem uma empresa da lista. nem mesmo as inicializados pela classe banco. html listaEmpresas.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.List, br.com.gerenciador.servlet.Empresa" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


<!DOCTYPE html>
<html>

    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>

    <body>
    <br>Lista de empresas cadastradas:
        <ul> 

        <c:forEach items="${empresas}" var="empresa">
            <li> ${empresas.nome }</li>
        </c:forEach>

        </ul>

    </body>

</html>

não fiz qualquer alteração nos códigos do backend.

9 respostas

Bom dia Kaique, coloca sua servlet aqui por favor?

package br.com.gerenciador.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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;


    public ListaEmpresasServlet() {

    }


    protected void doGet(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);



    }

}

no navegador aparece erro 500,

Type Exception Report

Message An exception occurred processing [/listaEmpresas.jsp] at line [20]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: An exception occurred processing [/listaEmpresas.jsp] at line [20]

17:         <ul> 
18:         
19:         <c:forEach items="empresas" var="empresa">
20:         <li>${empresa.nome}</li>
21:         </c:forEach>
22:         
23:         


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:607)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:496)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    br.com.gerenciador.servlet.ListaEmpresasServlet.doGet(ListaEmpresasServlet.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

javax.el.PropertyNotFoundException: Property [nome] not found on type [java.lang.String]
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260)
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)
    javax.el.BeanELResolver.property(BeanELResolver.java:347)
    javax.el.BeanELResolver.getValue(BeanELResolver.java:92)
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:113)
    org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:702)
    org.apache.jsp.listaEmpresas_jsp._jspx_meth_c_005fforEach_005f0(listaEmpresas_jsp.java:203)
    org.apache.jsp.listaEmpresas_jsp._jspService(listaEmpresas_jsp.java:149)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:458)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    br.com.gerenciador.servlet.ListaEmpresasServlet.doGet(ListaEmpresasServlet.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.

Altera

<c:forEach items="${empresas}" var="empresa">
            <li> ${empresas.nome }</li>
        </c:forEach>

Para:

<c:forEach items="${empresas}" var="empresa">
            <li> ${empresa.nome }</li>
        </c:forEach>

Alterei mas o erro no navegador persiste

Na sua classe Empresa tem a propriedade nome, os getters e setters?

tem sim

package br.com.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;
    }

}

Deixa eu ver o método de listar na classe Banco

Classe Banco Completa

package br.com.gerenciador.servlet;

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

public class Banco {
    private static List<Empresa> lista = new ArrayList<>();

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

    public void adiciona(Empresa empresa) {
        lista.add(empresa);
        System.out.println("Empresa cadastrada no banco");
    }
    public List<Empresa> getEmpresas(){
        return Banco.lista;
    }
}