Sunteți pe pagina 1din 7

Utilizando Spring MVC Bean Validation

Spring MVC Bean Validation es una de las características más utilizadas de Spring MVC y
nos permite apoyarnos en la JSR 303 (Bean Validation ) para validar la información de los
objetos que estemos introduciendo con un formulario. Para ello deberemos incluir en el
proyecto de Maven las dependencias de Spring MVC así como las de Hibernate Validator
que implementa la especificación JSR 303.

<dependencies>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
Utilizando Spring MVC Bean Validation

</dependency>
</dependencies>

El siguiente paso será configurar Spring para que el fichero de Application-Context.xml


soporte anotaciones a nivel de controladores.

<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<mvc:annotation-driven />
<context:component-scan base-
package="com.arquitecturajava.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolv
er">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
Utilizando Spring MVC Bean Validation

</beans>

Realizadas estas dos primeras operaciones construiremos un formulario que nos permite
introducir el nombre y la edad de una Persona.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<%@taglib prefix="form"
uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form:form modelAttribute="persona" action="verPersona.do"
method="post">
Nombre:<form:input id="nombre" path="nombre" />

Edad:<form:input id="edad" path="edad" />


<form:button value="enviar" >enviar</form:button>

<form:errors path="edad" />

</form:form>
</body>
Utilizando Spring MVC Bean Validation

</html>

Spring MVC Bean Validation (Business Object)


Realizados estos primeros pasos debemos implementar en la clase de negocio “Persona” las
anotaciones de Bean Validation que permitan validar el campo edad.

package com.arquitecturajava.negocio;

import javax.validation.constraints.Min;
import javax.validation.constraints.Size;

public class Persona {

private String nombre;

@Min(0)
private int edad;

public int getEdad() {


return edad;
}

public void setEdad(int edad) {


this.edad = edad;
}

public String getNombre() {


return nombre;
}
Utilizando Spring MVC Bean Validation

public void setNombre(String nombre) {


this.nombre = nombre;
}

Como se puede observar se ha utilizado la anotación @Min para asegurar que el valor
mínimo del campo edad es cero.

Spring MVC Bean Validation (Controller)


Por último queda ver como se implementa el Controlador.

package com.arquitecturajava.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.arquitecturajava.negocio.Persona;

@Controller
public class PersonaController {
Utilizando Spring MVC Bean Validation

@RequestMapping(value ="/verPersona")
public String enviar(@Valid Persona persona, BindingResult
bindingResult) {
if (bindingResult.hasErrors()) {

return "formularioPersona";
}else {
return "verPersona";
}

}
@RequestMapping(value="/formularioPersona")
public String formularioPersona(@ModelAttribute Persona persona) {

return "formularioPersona";
}
}

En este caso el método enviar incluye una anotación @Valid que se encarga de comprobar si
las validaciones de la clase Persona se cumplen o no. En el caso de que se cumplan pasamos
a una página de destino que muestra los datos de la Persona. En caso contrario retornamos
el control a la página original si la edad es negativa.
Utilizando Spring MVC Bean Validation

Con estos datos Spring MVC creará un objeto de tipo Persona y le pasará la información del
formulario. Las anotaciones de Bean Validation comprobarán si el objeto es válido.

Al no serlo nos enviará de vuelta al formulario mostrándonos un mensaje de error que


clarifique lo que ha sucedido.

De esta forma habremos integrado Bean Validation con Spring MVC. Una de las grandes
ventajas de Bean Validation es que únicamente implementamos las validaciones en un lugar.

Otros artículos relacionados : Spring MVC Configuración , JSF vs Spring MVC

S-ar putea să vă placă și