package com.trifulcas.SpringBootVistas.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import com.trifulcas.SpringBootVistas.model.Genero; import com.trifulcas.SpringBootVistas.repository.GeneroRepository; @Controller public class MainController { @Autowired GeneroRepository generoRepository; @GetMapping("/index") public String index(Model model) { // Para pasar datos a la vista usamos model model.addAttribute("nombre", "Pepito pérez"); // Lo que devolvemos aquí es el nombre de la vista // Spring boot automáticamente buscará una página index.html // En la carpeta resources/templates return "index"; } // La primera vez que estamos haciendo un MVC como dios manda @GetMapping("/genero/{id}") public String getGenero(Model model, @PathVariable int id) { // Voy al modelo para obtener los datos del genero Genero genero=generoRepository.findById(id).orElse(null); // Una vez tengo esos datos los envío a la vista vía model model.addAttribute("genero", genero); // Lo que devolvemos aquí es el nombre de la vista // Spring boot automáticamente buscará una página index.html // En la carpeta resources/templates return "genero"; } // La primera vez que estamos haciendo un MVC como dios manda @GetMapping("/generos") public String getGeneros(Model model) { // Voy al modelo para obtener los datos del genero List<Genero> generos=generoRepository.findAll(); // Una vez tengo esos datos los envío a la vista vía model model.addAttribute("generos", generos); // Lo que devolvemos aquí es el nombre de la vista // Spring boot automáticamente buscará una página index.html // En la carpeta resources/templates return "generos"; } }
index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Mi primera vista</title> </head> <body> <!-- Las plantillas Thymeleaf tienen una serie de comandos para utilizar y mostrar la información que nos pasan--> <h1>Hola <span th:text="${nombre}"></span> ¿Qué tal?</h1> </body> </html>
genero.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Genero</title> </head> <body> <h2>Género</h2> <!-- A mí me han pasado los datos en la entidad genero Y muestro las propiedades de esa entidad --> <p th:text="${genero.idgenero}"></p> <p th:text="${genero.nombre}"></p> </body> </html>
generos.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Generos</title> <!-- Latest compiled and minified CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- Latest compiled JavaScript --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> </head> <body> <h2>Géneros</h2> <div class="card w-50" th:each="genero: ${generos}"> <div class="card-header"><span th:text="${genero.idgenero}"></span></div> <div class="card-body"><span th:text="${genero.nombre}"></span></div> </div> </body> </html>
Si yo voy a esta url: http://localhost:8080/genero/3
Podré ver los datos del género que nos pidan, en este caso 3