Directiva each con Thymeleaf

Para ver la directiva each de thymeleaf en ves de enviar objetos enviaremos una lista a la vista.

@Controller
@RequestMapping("/project") //Primer Nivel de Mapeo 
public class ProjectController {
    @GetMapping({"","/","/Home"}) //Segundo Nivel de Mapeo
    public String project(Model model) {
        
        Project p1 = new Project(
                "Proyecto 01",
                "Descripción del proyecto 01"
                );
        
        Project p2 = new Project(
                "Proyecto 02",
                "Descripción del proyecto 02",
                "https://oregoom.com"
                );
        
        Project p3 = new Project(
                "Proyecto 03",
                "Descripción del proyecto 03"
                );
        
        List<Project> projects = new ArrayList<>();
        
        projects.add(p1);
        projects.add(p2);
        projects.add(p3);
        
        model.addAttribute("projects", projects);
        return "projects";
    }
}

Ahora en la vista crearemos solo una plantilla para mostrar todo los objetos de la  lista.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Alex Roel - Projectos</title>
</head>
<body>
    <h1>Mis Proyectos</h1>
    <div th:each="project: ${projects}">
        <h2 th:text="${project.title}"></h2>
        <p th:text="${project.description}"></p>
        <samp th:if="${project.url != null}">
            <a th:href="${project.url}">Mas Información</a>
        </samp>
    </div>
</body>
</html>