Hibernate Validator es la implementación de referencia de la JSR 303.
Cuando validamos datos es posible que la validación sea puesta en la capa de presentación. Poniendo la validación en la capa de presentación corremos el riesgo de replicarla cuantas pantallas se puedan cargar los datos o si por ejemplo hay que exponer una funcionalidad por un web service o mecanismo remoto. El mejor lugar para las validaciones es la capa de presentación y hibernate validator nos ayuda a escribir estas validaciones por medio de anotaciones o xml.
Hibernate validator permite:
- Definir validaciones usando XML y/o anotaciones
- Validación completa y recursiva de objetos
- Definición a medida de constraints y validadores
- Personalización de mensajes de error
Las anotaciones más útiles son:
@Length(min=, max=): Chequea si el largo del string se encuentra en el rango indicado.
@Max(value=): Chequea que el valor sea menor o igual que el valor indicado.
@Min(value=): Chequea que el valor sea mayor o igual que el valor indicado.
@NotNull: Chequea que el valor no sea nulo
@Email: Chequea que el valor sea un mail valido.
@Range(min=, max=): Chequea que el valor se encuentre entre el rango especificado.
@Future: Chequea que el valor sea una fecha futura.
@Past: Chequea que el valor sea una fecha pasada.
@Pattern(regex="regexp", flag=): Cheque a que la propiedad machea con la expresión regular, given a match flag (see java.util.regex.Pattern for more information)
@Patterns( {@Pattern(...)} ): Como @Pattern, pero con multiples expresiones regulares.
Veamos un ejemplo de una clase validada por medio de Hibernate Validator:
package org.assembly.fenrir.model.student;
import java.util.Calendar;
import java.util.Date;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Past;
/**
* class that represents a student
*
* @author emanuel
*
*/
public class Student {
private static final int COUNT_MONTH_IN_YEAR = 12;
private String name;
private String lastName;
private Date birthDate;
private String comment;
public Student(String name, String lastName, Date birthDate){
this.name = name;
this.lastName = lastName;
this.birthDate = birthDate;
}
public Student() { }
@NotNull
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@NotNull
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@NotNull
@Past
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
Pero como es que se valida? En cualquier punto de la aplicación se puede validar si los datos son correctos en cualquier capa de la aplicación, pero por ejemplo utilizando en la capa de presentación richfaces; este ya hace las validaciones atravez de las anotaciones o xml.
Si utilizas maven y quieres agregar este framework, aca va la dependencia del pom:
org.hibernate
hibernate-validator
3.1.0.GA
Como siempre dejo link: