java

Validar formularios en Spring Boot

Validar formularios con Spring Boot

En este post te mostraré a validar un formulario en Spring Boot y a mostrar los mensajes de error (para indicar en dónde se equivocó al llenarse) con Thymeleaf.

La validación es muy fácil, pues solo se utilizan anotaciones en la entidad.

Verás que es muy sencillo gracias a las anotaciones como Min, NotNull y Size, las cuales se encuentran en:

javax.validation.constraints.*

Primero: la entidad o clase

Dentro de nuestra clase debemos realizar las anotaciones para validar formularios en Spring Boot. Por cada propiedad que haya, hacemos una anotación.

Por ejemplo, veamos esta validación para que la cadena no sea nula:

See the gist on github.

En este caso utilizamos la anotación de @NotNull justo arriba de la propiedad llamada nombre.

Las anotaciones también pueden recibir “argumentos”, entre ellos puede ir el mensaje que se muestra en caso de que el dato no sea válido. Por ejemplo:

See the gist on github.

A través de message indicamos el mensaje que se muestra en caso de que el dato no sea válido al validar formularios en Spring Boot.

Al final del post dejaré un ejemplo completo de otras validaciones para cada propiedad de la clase.

Validar en el controlador

Una vez que hemos definido las validaciones de la clase, es hora de validar en el controlador los datos enviados por formulario.

Para que la validación se realice, debemos indicar la anotación @Valid al inyectar nuestra entidad o clase, y también debemos inyectar BindingResult.

See the gist on github.

La verdadera comprobación de que los datos son válidos es al llamar a hasErrors(), en caso de que los tenga, se recomienda redirigir al usuario al formulario que llenó de manera equivocada.

Si hasErrors() devuelve false entonces podemos asumir que los datos del formulario son válidos, o mejor dicho, que cumplieron las validaciones indicadas en la entidad.

Mostrar los errores en el formulario

Suponiendo que los datos que el usuario introdujo no son válidos, lo vamos a redireccionar al formulario renderizado con Thymeleaf.

Ahora tenemos disponible a #fields dentro de la vista. En la misma podemos usar th:if  (esto es opcional, pues si usamos th:errors no hace falta el if)con:

#fields.hasErrors("campo")

Para mostrar el mensaje de error usamos:

th:errors="*{campo}"

Los errores de formulario se pueden mostrar en cualquier lugar apropiado. Veamos un ejemplo:

See the gist on github.

En la línea 4 tenemos un div que se mostrará si hay errores en el campo nombre.

Ejemplo completo para validar formularios en Spring Boot

Ejemplo de validación de un formulario con Spring Boot usando Bootstrap 4

Ahora que ya he explicado lo básico, voy a mostrar un ejemplo completo de un sistema que ando haciendo, recuerda que es un ejemplo y que debes entender el código antes de copiarlo y pegarlo.

Comenzando por la clase, que a su vez es una entidad. Se pueden observar todas las validaciones que se hacen a las propiedades, por ejemplo, en el precio o en la existencia.

See the gist on github.

Después tenemos el controlador.

Por el momento solo estoy haciendo la validación del formulario en el método guardarProducto (línea 55) pero como las anotaciones ya están en la clase solo hay que llamara bindingResult.hasErrors en los otros métodos.

See the gist on github.

Finalmente en la vista tenemos el siguiente formulario. Se agrega la clase dinámica is-invalid en caso de que haya errores, y también se muestra un div con ese mensaje usando th:errors.

See the gist on github.

Estoy usando th:classappend para agregar la clase de error al input de Bootstrap. También estoy usando el div con la clase invalid-feedback para que la misma se muestre bajo el input.

Obviamente no necesitas estilos para validar formularios en Spring Boot, pero no pasa nada si los agregas.

Así es como terminamos por hoy. Puedes leer más sobre Spring Boot en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

2 días hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

2 días hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

2 días hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

2 días hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

6 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

7 días hace

Esta web usa cookies.