Definición: El modelo en Spring MVC es un contenedor que transporta datos entre el controlador y la vista (en este caso, Thymeleaf).
Uso: Los controladores de Spring pueden agregar atributos al modelo mediante el uso de Model
, ModelMap
o ModelAndView
. Estos atributos son luego accesibles en la vista Thymeleaf.
@Controller
public class MiControlador {
@GetMapping("/ejemplo")
public String ejemplo(Model model) {
model.addAttribute("mensaje", "¡Hola, Thymeleaf!");
return "ejemplo"; // Nombre de la vista Thymeleaf
}
}
Acceso a Datos: En Thymeleaf, los atributos del modelo se pueden acceder utilizando expresiones. Por ejemplo, el atributo mensaje
que se agregó en el controlador puede ser utilizado en la vista de la siguiente manera:
<p th:text="${mensaje}"></p> <!-- Esto renderiza "¡Hola, Thymeleaf!" -->
📝 Nota
${}: Para acceder a atributos del modelo.
#: Para acceder a funciones de utilidades.
@: Para acceder a beans Spring.
Datos Dinámicos: Thymeleaf puede mostrar datos dinámicos que provienen del modelo. Puedes utilizar atributos como th:text
, th:href
, th:src
, etc., para vincular valores desde el modelo.
<a th:href="@{/usuario/${usuarioId}}">Ver Usuario</a>
En el caso de formularios, puedes enlazar el modelo a un objeto. Por ejemplo:
@PostMapping("/usuario")
public String crearUsuario(@ModelAttribute Usuario usuario) {
// Lógica para guardar el usuario
return "redirect:/usuarios";
}
En la vista, puedes utilizar:
<form th:action="@{/usuario}" th:object="${usuario}" method="post">
<input type="text" th:field="*{nombre}" />
<button type="submit">Crear</button>
</form>
Thymeleaf permite manejar errores de validación utilizando:
<form th:action="@{/usuario}" th:object="${usuario}" method="post">
<input type="text" th:field="*{nombre}" />
<div th:if="${#fields.hasErrors('nombre')}" th:errors="*{nombre}">Error en nombre</div>
<button type="submit">Crear</button>
</form>