viernes, 23 de septiembre de 2016

Java Bean Validation (JSR 303): Nivel básico

Hoy vamos a ver un poco sobre esta especificación que forma parte de Java EE 6, y que nos sirve para realizar la validación de Java Beans o POJOs. 

Esta especificación basada en anotaciones nos facilitará enormemente la validación de determinados objetos, por ejemplo representaciones java de formularios. 

El funcionamiento es muy básico, encima del atributo del Java Bean ponemos la anotación, aquella que valide el comportamiento deseado. Estas propias anotaciones son muy descriptivas, por lo que leyéndolas podremos identificar que es lo que hacen. Aquí esta el listado oficial.

public class Formulario {
	@NotNull
	@Size(min=5, max=50)
	private String nombre;
	@NotBlank
	private String apellidos;
	@Min(5)
	private Integer edad;
	@Email
	private String mail;

Si utilizamos Spring MVC, por ejemplo podremos validar el Java Bean de forma sencilla al enviar el formulario, de la siguiente forma:

@RequestMapping(value = "/registrar", method = RequestMethod.POST)
public String addCustomer(@Valid Formulario formulario, BindingResult result) {
	if (result.hasErrors()) {
		return "registro.page";
	} else {
		return "Done";
	}
}

Si queremos hacer un test podemos realizarlo tambíen de forma sencilla:

@Test
	public void testFormWithNoValues() {
	Formulario form = new Formulario();
	// validate the input
	ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
	Validator validator = factory.getValidator();
	Set<ConstraintViolation<Formulario>> violations = validator.validate(form);
	Assert.assertTrue(violations.size() == 2);
}

Como se puede ver en el test las validaciones tienen asociado un mensaje por defecto, que además se encuentra internacionalizado. 

No hay comentarios:

Publicar un comentario