En Java EE 8, el api Bean Validation ha venido con mejoras.
Por ejemplo, ahora podemos validar un campo de tipo
También, determinar los límites de una lista:
Al igual que un nuevo tipo de validación (y así evitar log RegEx)
Podemos evaluar los campos validados desde el mismo Java (aquí un ejemplo desde una prueba unitaria):
Ahora bien, este mismo Bean con validación puede ser usado dentro de un JSF:
https://bitbucket.org/apuntesdejava/novedades-javaee-8/src/master/bean-validation/?at=master
Por ejemplo, ahora podemos validar un campo de tipo
java.time.LocalDate
@Past private LocalDate fechaIngreso;
También, determinar los límites de una lista:
@NotEmpty private List<@Size(min = 1, max = 15) String> proyectos;
Al igual que un nuevo tipo de validación (y así evitar log RegEx)
@Email private String email;
Podemos evaluar los campos validados desde el mismo Java (aquí un ejemplo desde una prueba unitaria):
@Test public void testMemberWithNoValues() { Empleado e = new Empleado(); e.setEmail("abc@"); e.setDni("12345678"); e.setProyectos(Arrays.asList("Proyecto 1", "Proy2", "Proy3")); // validate the input ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<ConstraintViolation<Empleado>> vs = validator.validate(e); vs.forEach((v) -> { System.out.println("--->" + v.getPropertyPath() + ":" + v.getMessage()); }); }
Ahora bien, este mismo Bean con validación puede ser usado dentro de un JSF:
<h:body> <h:form> <h:outputLabel for="nombre" value="Nombre"/> <h:inputText id="nombre" value="#{formBean.empleado.nombre}" /><br/> <h:outputLabel for="email" value="Email"/> <h:inputText id="email" value="#{formBean.empleado.email}" /><br/> <h:outputLabel for="dni" value="DNI"/> <h:inputText id="dni" value="#{formBean.empleado.dni}" /><br/> <br/> <h:commandButton value="Enviar" /> </h:form> </h:body>
Código fuente
Puedes ver este ejemplo en acción con este código fuente completo:https://bitbucket.org/apuntesdejava/novedades-javaee-8/src/master/bean-validation/?at=master