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

[Dúvida] Porque a exigência do atributo ser público

Ao executar o projeto onde faço a referência do id para listar os filmes salvos (${filme.id}) eu recebo a seguinte exceção:

org.thymeleaf.exceptions.TemplateProcessingException:
Exception evaluating SpringEL expression: "filme.id" (template: "Filmes/listagem" - line 28, col 22)

Caused by: org.springframework.expression.spel.SpelEvaluationException: 
EL1008E: Property or field 'id' cannot be found on object of type 'com.alura.screammatch.Model.Filme' - maybe not public or not valid?

Ao colocar a variável id como public o código compila normalmente. Existe um por que disso estar acontecendo? O meu código listagem.html

<!DOCTYPE html>
<html lang="en"
      xmlns:th="http://thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorate="~{template.html}">
<head>
    <link rel="stylesheet" href="../static/css/estilos.css" th:href="@{/css/estilos.css}">
    <title>Lista de Filmes</title>
</head>
<body>
<div layout:fragment="conteudo">
    <h2>Lista de Filmes</h2>
    <table>
      <thead>
        <th>NOME</th>
        <th>DURAÇÃO</th>
        <th>ANO DE LANÇAMENTO</th>
        <th>GÊNERO</th>
        <th>AÇÕES</th>
      </thead>
      <tbody>
          <tr th:each="filme : ${lista}">
              <td th:text="${filme.nome}"></td>
              <td th:text="${filme.duracao}"></td>
              <td th:text="${filme.ano}"></td>
              <td th:text="${filme.genero}"></td>
              <td>
                  <a th:href="@{/filmes/formulario?id={id}(id=${filme.id})}">Editar</a>

                  <form action="/filmes" method="post">
                      <input type="hidden" name="_method" value="delete">
                      <input type="hidden" name="id" th:value="${filme.id}">

                      <input type="submit" value="Excluir">
                  </form>
              </td>
          </tr>
      </tbody>
    </table>
</div>
</body>
</html>
1 resposta
solução!

Oi Natali!

O erro indica que sua classe Filme não tem o atributo id.

Confere na classe Filme se tem o atributo id e se tem o método getter dele, pois o Thymeleaf acessa os atributos via métodos getters.