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

HTTP Status 500 - Property [dataAbertura] not found on type [br.com.alura.gerenciador.Servlet.Empresa]

Quando tento acessar e exibir o atributo dataAbertura da classe empresa através do jsp ele me retorna o erro:

Stacktrace:] with root cause javax.el.PropertyNotFoundException: Property [dataAbertura] not found on type [br.com.alura.gerenciador.Servlet.Empresa]

Segue o jsp listaEmpresa:

<%@ 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"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Java Standard Taglib</title>
</head>
<body>
    Lista de empresas cadastradas: <br /> 
    <ul>
        <c:forEach items="${empresas}" var="empresa">
        <li>${empresa.nome }- <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/></li>    
        </c:forEach>

    </ul>
</body>
</html>

E a classe Empresa:

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 Date getData() {
        return dataAbertura;
    }
    public void setData(Date data) {
        this.dataAbertura = data;
    }
    public Integer getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

}

Vi que tinham outros tópicos aqui no fórum com o mesmo problema, mas nenhuma das soluções deles funcionaram pra mim e já to meio sem idéia do que possa ser, alguma luz ?

Dei uma olhada na aba Problems também, lá tem 2 warning referentes ao jstl que dizem "unknown tag" porém, quando eu tiro o acesso ao atributo data, o acesso ao nome funciona normalmente, mesmo com esses warnings.

1 resposta
solução!

Boa noite, meu caro! Provavelmente isso está acontecendo porque os métodos especiais ( get e set) para o campo dataAbertura estão "indevidamente" nomeados. Troque por getDataAbertura e setDataAbertura e nos dê um feedback.

Bons estudos!