El tutorial o código que hallarás en este artículo es la resolución más fácil y válida que hallamos a esta duda o dilema.
Solución:
Si enfrenta este problema en la última versión de Spring Boot (2.3.0), asegúrese de agregar la siguiente dependencia:
org.springframework.boot
spring-boot-starter-validation
Observación:
En una versión anterior de Spring Boot (1.4.7), javax.validation
solía trabajar fuera de la caja. Pero, después de actualizar a la última versión, las anotaciones fallaron. Agregar la siguiente dependencia por sí sola no funciona:
javax.validation
validation-api
Porque esto proporciona la especificación JSR pero no la implementación. También puedes usar hibernate-validator
en vez de spring-boot-starter-validation
.
Primero, no necesita tener una anotación @Valid para esas variables de clase en UpdatePrintContracts. Puede eliminarlos.
Para activar la validación de una entrada de @Controller, simplemente anote el argumento de entrada como @Valid o @Validated:
@RequestMapping(value=PATH_PRINT_CONTRACTS, method=RequestMethod.POST)
public ResponseEntity> printContracts(@Valid @RequestBody final UpdatePrintContracts updatePrintContracts) throws Exception {
Consulte aquí para obtener una comprensión completa de la validación de modelos en Spring Boot.
Y si quieres comprobar que un string contiene solo caracteres específicos, debe agregar anclas (^ para el comienzo de la string$ para el final del string) para asegurarse de que su patrón coincida con todos los string.Los corchetes son solo para escribir una cantidad,
@Pattern(regexp = "^[\pAlnum]1,32$")
Por último, supongo que tiene los siguientes frascos en su classpath,
.validation-api.jar (contiene la API abstracta y el escáner de anotaciones)
.hibernate-validator.jar (contiene la implementación concreta)
Para cualquiera que tenga este problema con 2.0.1.Final:
En todas las versiones de SpringBoot anteriores a la 2.2, El iniciador de validaciones ya no forma parte del iniciador web
Ver notas aquí
Entonces, todo lo que tiene que hacer es agregar esta dependencia en su archivo build.gradle/pom
GRADO:
implementation 'org.springframework.boot:spring-boot-starter-validation'
MAVEN
org.springframework.boot
spring-boot-starter-validation
Comentarios y valoraciones del tutorial
Recuerda difundir este enunciado si te fue útil.