0

je suit classe modèleJavax Bean Validation: @Max et @Min ne fonctionne pas

import javax.validation.constraints.Max; 
import javax.validation.constraints.Min; 
public class Person { 

    @Max(value = 10, message = "First name should be smaller than 10 characters.") 
    private String fname; 
    @Min(value = 5, message = "Last name should have atleast 5 characters.") 
    private String lname; 
    private String status; 

    public Person(String fname, String lname, String status) { 
     super(); 
     this.fname = fname; 
     this.lname = lname; 
     this.status = status; 
    } 

Suite est la classe de test où je validais la classe modèle personne.

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.util.Set; 

import javax.validation.Configuration; 
import javax.validation.ConstraintViolation; 
import javax.validation.Validation; 
import javax.validation.Validator; 
import javax.validation.ValidatorFactory; 


import the.bhushan.models.Person; 

public class Test { 

    public static void main(String[] args) throws FileNotFoundException { 
     Test test = new Test(); 
     //test.byXML(); 
     test.byAnnotation(); 
    } 

    private void byAnnotation() { 
     ValidatorFactory validatorFactory = Validation 
       .buildDefaultValidatorFactory(); 
     Validator validator = validatorFactory.getValidator(); 

     Person emp1 = new Person("Bhushan", "Patil", "A"); 
     Set<ConstraintViolation<Person>> validationErrors = validator 
       .validate(emp1); 

     if (!validationErrors.isEmpty()) { 
      for (ConstraintViolation<Person> error : validationErrors) { 
       System.out.println(error.getMessageTemplate() + "::" 
         + error.getPropertyPath() + "::" + error.getMessage()); 

      } 
     } 
    }} 

Même si le champ fname n'a qu'une valeur de 7 caractères, il affiche le message de validation suivant.

Nom doit avoir atleast 5 nom characters.::lname::Last doit avoir atleast 5 caractères. Le prénom doit être inférieur à 10 caractères. :: nom :: Le premier nom doit être inférieur à 10 caractères.

Répondre

2

Cette annotation n'est pas correcte. @Min et @Max sont pour BigDecimal, BigInteger, byte, short, int, long et leurs emballages respectifs.

Veuillez utiliser @Size à la place. Extrait de javadoc:

types pris en charge sont les suivants:

  • String (longueur de la chaîne est evaludated)
  • Collection (taille de la collection est évaluée)
  • Carte (taille de la carte est évaluée)
  • array (longueur de la matrice est évaluée)