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):
-
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;
-
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. -
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 unisValid
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:
-
Nombre de cadena = null;
@NotNull
: false@NotEmpty
: false@NotBlank
: false -
Cadena nombre = “”;
@NotNull
: true@NotEmpty
: false@NotBlank
: false -
Cadena nombre = ” “;
@NotNull
: true@NotEmpty
: true@NotBlank
: false -
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.
@NotNull:
una CharSequence, Collection, Map o Array restringida es válida siempre que no sea nullpero puede estar vacío@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.@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.