Validar Beans

Código Fuente: Ejemplo 1

Esta especificación considera una sola clase para realizar todas las validaciones. Esta clase es: “Validator” y la manera más simple de tener una referencia a este objeto es hacer lo siguiente:

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();

Ahora bien, teniendo en cuenta la siguiente declaración:

public class ComprobanteDePago {
private Date fechaDeEntrega;
@Future
public Date getFechaDeEntrega() {
return fechaDeEntrega;
}
}

y teniendo la referencia al objeto Validator podemos llevar a cabo las siguientes validaciones:

Validar el valor de un atributo

Si sólo deseamos ejecutar la validación @Future que está marcando el “getter” del atributo “fechaDeEntrega” tendríamos que hacer lo siguiente:

Set<ConstraintViolation<ComprobanteDePago>> errorsProperty =  validator.validateProperty(comprobante,"fechaDeEntrega");
System.out.println("Errores del atributo <fechaDeEntrega>:"+ errorsProperty);

Acá estamos llamando al método “validateProperty” del validator, enviándole como parámetros la instancia del objeto y el nombre del atributo que se desea validar.

Validar si un valor cumple con las restricciones de un atributo

Si sólo deseamos validar que cierto valor cumple con las restricciones de un atributo, sin tener que setear el valor a la instancia del objeto debemos hacer lo siguiente:

Set<ConstraintViolation<ComprobanteDePago>> errorsPropertyValue =  validator.validateValue(ComprobanteDePago.class,"fechaDeEntrega",new Date());
System.out.println("Errores del valor que se quiere setear al atributo <fechaDeEntrega>:"+ errorsPropertyValue);

Acá estamos llamando al método “validateValue” del validator, enviándole como parámetro la clase, el nombre del atributo y el valor que se desea validar.

Validar todo el objeto

Para validar todas las restricciones asociadas a un objeto debemos hacer lo siguiente:

ComprobanteDePago comprobante = new ComprobanteDePago();
Set<ConstraintViolation<ComprobanteDePago>> errors = validator.validate(comprobante);
System.out.println("Errores:"+ errors);

Acá estamos llamando al método “validate” del validator y le estamos enviando la instancia del objeto. De esta manera obtendremos todos los errores luego de que todas las restricciones hayan sido revisadas.

A tener en cuenta

La anotación “@Valid” no es tomada en cuenta cuando se usa cualquiera de los métodos: “validateProperty” o “validateValue”.

Tags: , ,

Deja un comentario

Usted debe ser conectado a publicar un comentario.