web-dev-qa-db-fra.com

javax.validation.NotBlank manquant validateur

J'ai l'obligation de ne pouvoir utiliser aucun type d'annotation de validation d'Hibernate dans le module api commun (projet multi-module). J'ai donc utilisé celui de javax.validation, qui est acceptable. 

Le problème commence lorsque je veux valider mes objets de domaine (j'utilise vaadin) contenant une annotation NotBlank. Je reçois l'exception suivante

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'Java.lang.String'. Check configuration for 'name'

La validation est appelée par appel

Validation.buildDefaultValidatorFactory().validateValue(beanType, propertyName, value)

Même code fonctionne parfaitement avec NotBlank de hibernate

De plus, @Size @NotNull de javax fonctionne bien.

Est-il possible de fournir l'implémentation du validateur NotBlank à DefaultValidatorFactory?

Est-ce que je manque une dépendance? (J'ai déjà un validateur hibernate)

NotBlank de javax fonctionne-t-il de la même façon que NotBlank de hibernate (je veux dire, valide-t-il les chaînes?)

Comment résoudre ceci?

6
daredesm

Le problème est dans la version que vous utilisez alors. Vous devez mettre à jour la série 6.0.x. Avec le dernier en date été 6.0.9. Notez que l'ID de groupe est modifié en org.hibernate.validator. 

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.9.Final</version>
</dependency>

le javax.validation.constraints.NotBlank fait partie de Bean Validation 2.0 et son validateur n’est pas présent dans la série 5.3.

8
mark_o

comme le dit baeldung.com Selon la spécification JSR 380, la dépendance validation-api contient les API de validation standard:

<dependency>
  <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>

Hibernate Validator est l'implémentation de référence de l'API de validation . Pour l'utiliser, nous devons ajouter les dépendances suivantes:

<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
<version>6.0.2.Final</version>

<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.2.Final</version></dependency>
0
billschen