Saltar al contenido

En Hibernate Validator 4.1+, ¿cuál es la diferencia entre @NotNull, @NotEmpty y @NotBlank?

Deseamos enseñarte la mejor información que descubrimos por todo internet. Deseamos que te sea de ayuda y si deseas aportar algo que nos pueda ayudar a mejorar siente la libertad de hacerlo..

Solución:

@NotNull: El objeto CharSequence, Collection, Map o Array no es nullpero pueden estar vacío
@NotEmpty: El objeto CharSequence, Collection, Map o Array no es null y tamaño > 0.
@NotBlank: Los string no es null y la longitud recortada es mayor que cero.

Para ayudarlo a comprender, veamos cómo se definen y llevan a cabo estas restricciones (estoy usando la versión 4.1):

  1. los @NotNull restricción se define como:

    @Constraint(validatedBy = NotNullValidator.class)  
    

    Esta clase tiene un isValid método definido como:

    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) 
     return object != null;  
    
    
  2. los @NotEmpty restricción se define como:

    @NotNull  
    @Size(min = 1)    
    

    Entonces esta restricción usos la @NotNull restricción anterior, y@Size cuya definición difiere según el objeto, pero debe explicarse por sí misma.

  3. Finalmente, el @NotBlank restricción se define como:

    @NotNull  
    @Constraint(validatedBy = NotBlankValidator.class)        
    

    Así que esta restricción también usa el @NotNull restricción, pero también restringe con la clase NotBlankValidator. Esta clase tiene un isValid método definido como:

    if ( charSequence == null )   //curious 
      return true;   
       
    return charSequence.toString().trim().length() > 0;  
    

    Curiosamente, este método devuelve true Si el string es nullpero false si y solo si la longitud del recorte string es 0. Está bien que regrese true si es null porque, como mencioné, el @NotEmpty la definición también requiere @NotNull.

Aquí están algunos ejemplos:

  1. Nombre de cadena = null;
    @NotNull: false
    @NotEmpty: false
    @NotBlank: false

  2. Cadena nombre = “”;
    @NotNull: true
    @NotEmpty: false
    @NotBlank: false

  3. Cadena nombre = ” “;
    @NotNull: true
    @NotEmpty: true
    @NotBlank: false

  4. String name = “¡Gran respuesta!”;
    @NotNull: true
    @NotEmpty: true
    @NotBlank: true

Me gustó la explicación en el siguiente enlace: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/

@NotNull: Comprueba si el valor no es nullsin tener en cuenta el contenido

@NotEmpty: Comprueba si el valor no es null ni vacío. Si solo tiene espacios vacíos, lo permitirá como no vacío.

@NotBlank: comprueba si el valor no es null ni vacío, recortando primero el valor. Significa que no permitirá solo espacios vacíos.

Entonces, si desea validar que un campo no es null pero también que no tiene solo espacios vacíos, sino texto, debe usar @NotBlank.

  1. @NotNull: una CharSequence, Collection, Map o Array restringida es válida siempre que no sea nullpero puede estar vacío
  2. @NotEmpty: una CharSequence, Collection, Map o Array restringida es válida siempre que no sea null y su tamaño/longitud es mayor que cero.
  3. @NotBlank: una cadena restringida es válida siempre que no sea null
    y la longitud recortada es mayor que cero.

Te invitamos a añadir valor a nuestra información cooperando tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *