84 votes

Les annotations de javax.validation.constraints ne fonctionnent pas

Quelle configuration est nécessaire pour utiliser les annotations de javax.validation.constraints comme @Size , @NotNull , etc. ? Voici mon code :

 import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Person {
      @NotNull
      private String id;

      @Size(max = 3)
      private String name;

      private int age;

      public Person(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
      }
}

Lorsque j'essaie de l'utiliser dans une autre classe, la validation ne fonctionne pas (c'est-à-dire que l'objet est créé sans erreur) :

 Person P = new Person(null, "Richard3", 8229));

Pourquoi cela n'applique-t-il pas les contraintes pour id et name ? Que dois-je faire d'autre ?

38voto

Artem Points 2001

Vous devez utiliser Validator pour vérifier si votre classe est valide.

 Person person = ....;
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);

Ensuite, en itérant les violations définies, vous pouvez trouver des violations.

11voto

yrazlik Points 4365

Dans mon cas, j'utilisais Spring Boot version 2.3.0. Lorsque j'ai modifié ma dépendance maven pour utiliser 2.1.3, cela a fonctionné.

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>
</dependencies>

6voto

Andreas Dietrich Points 155

Vous pouvez également simplement utiliser @NonNull avec la bibliothèque lombok à la place, au moins pour le scénario @NotNull . Plus de détails : https://projectlombok.org/api/lombok/NonNull.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X