Guía de Etiquetas Thymeleaf y Manipulación de Información en el Controller
Etiquetas Thymeleaf más Utilizadas en HTML
En este pequeño diccionario podrás encontrar algunas de las anotaciones, configuraciones y etiquetas más utilizadas al trabajar con Thymeleaf.
-
th:text: Muestra el contenido de una variable en el HTML.
<p th:text="${variable}">Texto por defecto</p><p> -
th:if / th:unless: Renderiza el contenido basado en una condición.
<div th:if="${condition}">Contenido si la condición es verdadera</div><div th:unless="${condition}">Contenido si la condición es falsa</div> -
th:each: Itera sobre una colección de elementos.
<ul><li th:each="item : ${items}" th:text="${item}">Elemento</li></ul> -
th:href: Genera enlaces dinámicos.
<a th:href="@{/ruta}">Enlace</a> -
th:src: Establece la fuente de una imagen.
<img th:src="@{/imagenes/logo.png}" alt="Logo"> -
th:action: Define la acción de un formulario.
<form th:action="@{/submit}" method="post"><input type="text" name="nombre"><button type="submit">Enviar</button></form> -
th:value: Establece el valor de un campo de entrada.
<input type="text" th:value="${variable}">
Manipulación de Información en el Controller
Aquí encontrarás algunos ejemplos de cómo manipular información en el controlador de Spring Boot. Recuerda anotar el controlador con la anotación @Controller y devolver el nombre de la vista en el método.
-
Recibir Datos del Formulario
@PostMapping("/submit")public String submitForm(@ModelAttribute("formData") FormData formData, Model model) {// Procesar datos del formulariomodel.addAttribute("message", "Datos recibidos correctamente");return "resultado";} -
Enviar Datos a la Vista
@GetMapping("/datos")public String enviarDatos(Model model) {model.addAttribute("variable", "Valor de ejemplo");return "vista";} -
Redirigir a Otra Página
@PostMapping("/redirigir")public String redirigir() {return "redirect:/nuevaRuta";} -
Manejo de Listas
@GetMapping("/lista")public String mostrarLista(Model model) {List<String> items = Arrays.asList("Item 1", "Item 2", "Item 3");model.addAttribute("items", items);return "lista";} -
Manejo de Condiciones
@GetMapping("/condicion")public String mostrarCondicion(Model model) {boolean condition = true;model.addAttribute("condition", condition);return "condicion";}
Ejemplo de Formulario con Mensaje de Confirmación
-
Template con Formulario
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><title>Formulario de Ejemplo</title></head><body><form th:action="@{/guardar}" th:object="${elemento}" method="post"><label for="nombre">Nombre:</label><input type="text" id="nombre" th:field="*{nombre}" /><button type="submit">Guardar</button></form><p th:if="${mensaje}" th:text="${mensaje}"></p></body></html> -
Controller para Manejar el Formulario
@Controllerpublic class FormularioController {@GetMapping("/formulario")public String mostrarFormulario(Model model) {model.addAttribute("elemento", new Elemento());return "formulario";}@PostMapping("/guardar")public String guardarElemento(@ModelAttribute("elemento") Elemento elemento, Model model) {try {model.addAttribute("mensaje", "Elemento creado correctamente");} catch (Exception e) {model.addAttribute("mensaje", "Ha pasado un error");}return "formulario";}} -
Clase Elemento
public class Elemento {private String nombre;...}
Explicación de las diferentes anotaciones que puedes encontrar en Spring MVC
-
@Controller: Anotación que indica que la clase es un controlador de Spring MVC, uno de sus parámetros es
valueque permite asignar un nombre al controlador.@Controllerpublic class Controlador {...} -
@GetMapping: Anotación que mapea una petición GET a un método del controlador, uno de sus parámetros es
valueque permite asignar la ruta de la petición.@GetMapping("/ruta")public String metodo() {...} -
@PostMapping: Anotación que mapea una petición POST a un método del controlador, uno de sus parámetros es
valueque permite asignar la ruta de la petición.@PostMapping("/ruta")public String metodo() {...} -
@ModelAttribute: Anotación que enlaza un método con un atributo del modelo, uno de sus parámetros es
valueque permite asignar un nombre al atributo.@PostMapping("/guardar")public String guardarElemento(@ModelAttribute("elemento") Elemento elemento, Model model) {...}4.1 Si no especificas el nombre del atributo, se utilizará el nombre de la clase en minúsculas.
@PostMapping("/guardar")public String guardarElemento(@ModelAttribute Elemento elemento, Model model) {...} -
@RequestParam: Anotación que enlaza un parámetro de la petición con un parámetro del método, uno de sus parámetros es
valueque permite asignar el nombre del parámetro.@GetMapping("/ruta")public String metodo(@RequestParam("parametro") String parametro) {...} -
@PathVariable: Anotación que enlaza una variable de la ruta con un parámetro del método, uno de sus parámetros es
valueque permite asignar el nombre de la variable.@GetMapping("/ruta/{variable}")public String metodo(@PathVariable("variable") String variable) {...}