Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

[HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'

Tags:

I want to underline that I already searched for this kind of problem but couldn't find a solution for my case. In my Spring Boot webapp I keep getting this error when validating beans using @NotEmpty or @NotBlank annotation of package javax.validation.constraints:

14:04:59,426 ERROR [org.springframework.boot.web.servlet.support.ErrorPageFilter] (default task-33) Forwarding to error page from request [/registrati on] due to exception [HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'.  Check configuration for 'username']: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation .constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'username'         at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:229)         at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorNoUnwrapping(ConstraintTree.java:310)         at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorInstanceForAutomaticUnwrapping(Constraint Tree.java:244) 

No errors if I use @NotNull annotation, but this is not the desired behavior because it allows for blank fields. These are my pom.xml dependencies:

    <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.0.4.RELEASE</version>         <relativePath/> <!-- lookup parent from repository -->     </parent>      <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>         <java.version>1.8</java.version>     </properties>      <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-jpa</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-security</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-thymeleaf</artifactId>         </dependency>         <dependency>           <groupId>nz.net.ultraq.thymeleaf</groupId>           <artifactId>thymeleaf-layout-dialect</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>             <exclusions>                 <exclusion>                     <groupId>org.springframework.boot</groupId>                     <artifactId>spring-boot-starter-tomcat</artifactId>                 </exclusion>             </exclusions>         </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-batch</artifactId>        </dependency>        <dependency>             <groupId>javax.servlet</groupId>             <artifactId>javax.servlet-api</artifactId>             <scope>provided</scope>         </dependency>          <dependency>             <groupId>org.mariadb.jdbc</groupId>             <artifactId>mariadb-java-client</artifactId>             </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>         <dependency>             <groupId>org.springframework.security</groupId>             <artifactId>spring-security-test</artifactId>             <scope>test</scope>         </dependency>         <dependency>             <groupId>com.google.code.gson</groupId>             <artifactId>gson</artifactId>         </dependency>          <!-- https://mvnrepository.com/artifact/net.sourceforge.nekohtml/nekohtml -->         <dependency>             <groupId>net.sourceforge.nekohtml</groupId>             <artifactId>nekohtml</artifactId>             <version>1.9.21</version><!--$NO-MVN-MAN-VER$-->         </dependency>          <!-- webjars -->         <dependency>             <groupId>org.webjars</groupId>             <artifactId>bootstrap</artifactId>             <version>4.1.3</version>             <exclusions>                 <exclusion>                     <groupId>org.webjars</groupId>                     <artifactId>jquery</artifactId>                 </exclusion>             </exclusions>         </dependency>          <!-- https://mvnrepository.com/artifact/org.webjars/datatables -->         <dependency>             <groupId>org.webjars</groupId>             <artifactId>datatables</artifactId>             <version>1.10.19</version>             <exclusions>                 <exclusion>                     <groupId>org.webjars</groupId>                     <artifactId>jquery</artifactId>                 </exclusion>             </exclusions>         </dependency>       </dependencies>      <build>         <plugins>             <!-- plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin -->         </plugins>     </build>   </project> 

I see that hibernate validator is working because if I don't use any @NotEmpty nor @NotBlank annotation, other annotations such as @Size are working correctly.

In my bean I'm importing javax.validation.constraints. When starting up my JBoss, following line about hibernate validator appears:

14:04:17,676 INFO  [org.hibernate.validator.internal.util.Version] (background-preinit) HV000001: Hibernate Validator 5.3.5.Final-redhat-2 

This is not the same version as the hibernate-validator 6.0.11 jar that is resolved by Maven.

What's happening? Maybe some dependency conflict?

Thanks to everyone that could help me.

like image 994
Simon Avatar asked Oct 02 '18 12:10

Simon


People also ask

What is Hibernate Validator?

Hibernate Validator allows to express and validate application constraints. The default metadata source are annotations, with the ability to override and extend through the use of XML. It is not tied to a specific application tier or programming model and is available for both server and client application programming.

Can we use @NotBlank for long?

@NotEmpty: a constrained CharSequence, Collection, Map, or Array is valid as long as it's not null, and its size/length is greater than zero. @NotBlank: a constrained String is valid as long as it's not null, and the trimmed length is greater than zero.


1 Answers

I got a similiar error but ...Constraints.NotEmpty' validating type 'java.lang.Long'

It happened because I was using @NotEmpty in a non-String field.

I solved it replacing @NotEmpty with @Size(value=1, message= "whatever")

like image 71
dmarquina Avatar answered Oct 04 '22 19:10

dmarquina