'Thymeleaf not loading the data

i have a spring boot application, and when i load the data in thymeleaf it doesn't load, it's empty. I'm using H2, so every time i launch the app i do some inserts to test, but it never loads the data. I've tried the enpoints with Postman, and they all work. I'm thinking it's something with the method i'm using, but i don't know yet. Here's my application models:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString

@Entity
@Table(name = "estudiante")
public class Estudiante {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "estudiante_generator")
    private Long id;

    @Column(name = "nombre")
    private String nombre;

    @Column(name = "apellido")
    private String apellido;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "profesor_id", nullable = false)
    @OnDelete(action = OnDeleteAction.CASCADE)
    @JsonIgnore
    private Profesor profesor;

}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString

@Entity
@Table(name = "profesor")
public class Profesor {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "profesor_generator")
    private Long id;

    @Column(name = "nombre")
    private String nombre;

    @Column(name = "apellido")
    private String apellido;

    @Column(name = "curso")
    private String curso;

    public Profesor(String nombre, String apellido, String curso){
        this.nombre = nombre;
        this.apellido = apellido;
        this.curso = curso;
    }
}

The controller for the index, and the controller for the backend:

    @GetMapping("/index")
    public String mostrarProfesores(Model model){
        List<Profesor> profesor = profesorRepository.findAll();
        model.addAttribute("profesores", profesor);
        return "index";
    }

@GetMapping("/profesores")
    public ResponseEntity<List<Profesor>> getProfesores(){
        List<Profesor> profesor = new ArrayList<Profesor>();
        profesorRepository.findAll().forEach(profesor::add);

        if(profesor.isEmpty()){
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        }
        return new ResponseEntity<>(profesor, HttpStatus.OK);
    }

And the thymeleaf template:

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
    <div>
        <h2>Users</h2>
        <table>
            <thead>
                <th>Nombre</th>
                <th>Apellido</th>
            </thead>
            <tbody>
                <th:block th:each="profesor : ${profesores}">
                <tr>
                    <td>[[${profesor.nombre}]]</td>
                    <td>[[${profesor.apellido}]]</td>
                </tr>
                </th:block>
            </tbody>
        </table>
    </div>
</body>
</html>

Any help is appreciated, thanks in advance for your help.



Solution 1:[1]

You should iterate the collection inside the <tr> label.

<tbody>
    <tr th:each="profesor : ${profesores}">
      <td th:text="${profesor.nombre}"></td>
      <td th:text="${profesor.nombre}"></td>
    </tr>
</tbody>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1