Sie sind auf Seite 1von 31

Struts Framework Validator

Eladio Del Razo (TribalProject)

FRAMEWORK VALIDATOR
FORMULARIO RFC CON STRUTS Y FRAMEWORK VALIDATOR
Nuevo proyecto Struts FormularioRFC_Framework_Validator

Dentro del Struts-Config ya viene el Plugin pre-configurado el Framework Validator

Struts Framework Validator

Eladio Del Razo (TribalProject)

Creamos nuevo paquete acciones y dentro 3 clases: UserRegistrationAction.java UserRegistrationForm.java Usuarios Usuarios.java

Struts Framework Validator

Eladio Del Razo (TribalProject)

Struts Framework Validator

Eladio Del Razo (TribalProject)

UserRegistrationAction.java

Struts Framework Validator

Eladio Del Razo (TribalProject)

UserRegistrationForm.java

Struts Framework Validator

Eladio Del Razo (TribalProject)

Struts Framework Validator

Eladio Del Razo (TribalProject)

MessageResources.Properties

Creamos 2 JSP: RegistroCorrecto.jsp RegistroUsuarios.jsp

Struts Framework Validator

Eladio Del Razo (TribalProject)

RegistroCorrecto.jsp

Struts Framework Validator

Eladio Del Razo (TribalProject)

RegistroUsuarios.jsp

Struts Framework Validator

Eladio Del Razo (TribalProject)

10

Struts Framework Validator

Eladio Del Razo (TribalProject)

Struts-Config.xml

11

Struts Framework Validator

Eladio Del Razo (TribalProject)

12

Struts Framework Validator

Eladio Del Razo (TribalProject)

Validation.xml

13

Struts Framework Validator

Eladio Del Razo (TribalProject)

Probamos el cdigo: Comprobacin de los campos

Validacin tipo email Las casillas Telfono y Fax regresan a cero si no se ingresan numero

14

Struts Framework Validator

Eladio Del Razo (TribalProject)

Comprobacin de password

Comprueba que se cumpla la mscara valida

FRAMEWORK VALIDATOR
Es usado para validar campos. Las validaciones son hechas de muchas formas, por ejemplo validar un cdigo postal, que se encuentra en un formulario de registro y en un formulario de pedidos. En lugar de estar escribiendo un cdigo de validacin en cada formulario (en cada uno de los mtodos de validacin dentro de los beans de formulario), podemos crear un mecanismo de validacin general para todos los nmeros postales del sistema. El Framework Validator trae muchas reglas de validaciones comunes y adems de estas reglas podemos crear nuestras propias reglas.

PARA INICIAR EL TEMA:


Vamos a usar el Framework Validator para validar campos de un formulario de registro. Para este formulario deseamos que el usuario ingrese su nombre. El username deber empezar con una letra, constaran de al menos 5 caracteres alfanumricos o guiones y no exceder de 11 caracteres, XD.

PASOS
FORMULARIO FRAMEWORK VALIDATOR Nnuevo proyecto Struts FormularioFrameworkValidator 1) Se debe agregar primero el Plugin de Validator al archivo de configuracin de Struts(El Worshop la lo trae incluido) que ser el encargado de leer las reglas de validacin. Para poder usar el Validator con Struts necesitamos agregar este Plugin en el Struts-config.xml debajo de la seccin Message Resource Definitions.

15

Struts Framework Validator

Eladio Del Razo (TribalProject)

Como archivos principales dentro del WEB-INF se necesitan: Validator-rules.xml Validator.xml

2) Por ahora solo se van a usar reglas de validacin comunes pre-existentes ya en nuestro archivo Validator-rules.xml as que no es necesario modificarles nada. El Validator.xml establece el mapeo de las propiedades con las reglas y con los mensajes de errores que se mostraran al no cumplir las reglas.

ACTION FORM
3) Nuevo paquete Nueva clase UserRegistrationForm extends ValidatorForm Creamos un ActionForm (UserRegistrationForm.java) que herede de la clase ValidatorForm (or.apache.struts.validator.ValidatorForm). Este ValidatorForm este se encarga de engancharse con el Framework Validator. El ValidatorFrom va a sobrescribir el mtodo validate() del ActionForm y comunicarse con el Validator Framework para validar los campos de este formulario. UserRegistrationForm.java

16

Struts Framework Validator

Eladio Del Razo (TribalProject)

Creamos nuestra accin UserRegistrationAction que extiende de Action UserRegistrationAction.java

4) Creamos nuestro JSP que vamos a utilizar userRegistration.jsp

17

Struts Framework Validator

Eladio Del Razo (TribalProject)

regFailure.jsp

regSucces.jsp

18

Struts Framework Validator

Eladio Del Razo (TribalProject)

STRUTS-CONFIG
Mapeamos nuestro Form Bean en el Struts-config.xml en la seccin de <form-beans>

Mapeamos nuestra accin

VALIDATOR.XML
Deberemos agregar el mapeo de la definicin del bean userRegistrationForm del Strutconfig.xml a las reglas que debern ser invocadas en las propiedades individuales del userRegistrationForm. Agregamos un form en el formset del validation.xml. Este cdigo establece que se escribirn las reglas de las propiedades del form bean que es asociado con el atributo userRegistrationForm definido dentro del Struts-config.xml. El nombre tiene que coincidir con el valor del atributo.

19

Struts Framework Validator

Eladio Del Razo (TribalProject)

Agregar campos en la declaracin de campos que correspondan al el userName. Especificaremos que formularios deseamos asociar con las reglas podemos empezar asociando campos con las reglas predefinidas:

Especificamos que el campo userName corresponden a las reglas required, minlength, y maxlength. Atributo depends Toma una coma delimitadora para una lista de reglas asociadas con esta propiedad. Entonces as este cdigo asocia la propiedad username con las reglas required, minlength, maxlength, estas reglas son un ejemplo de muchas reglas construidas en el Framework Validator. Estas reglas estn asociadas con el manejador de reglas y con un key de mensaje de error. Si miramos en el Validator-rules.xml en la parte de arriba encontramos:

El elemento Validator define la regla minlength, tambin usa el atributo classname para especificar el manejador de reglas, la clase que implementa la regla. En este ejemplo el manejador para esta regla es la clase org.apache.struts.validator.FieldChecks por el mtodo validateMinLength(). El atributo msg especfica el key que jalara del message bundle para el mensaje de error que se mostrara al validar el campo a la hora de validar. 20

Struts Framework Validator

Eladio Del Razo (TribalProject)

Es necesario agregar este mensaje en el message bundle. En este caso este mensaje ya viene escrito en el message bundle, tambin ya vienen todos los mensajes para todas las reglas preconstruidas.

Notamos que en mensajes de reglas maxlength(errors.maxlength) toma dos argumentos {0} y {1} como tambin lo hace minlength. El mensaje de regla required solo toma un argumento. Tu podras necesitar configurar estos elementos para estos argumentos. El primer argumento {0} corresponde a la etiqueta del campo, el segundo argumento {1} corresponde a la cardinalidad de los caracteres. Checa el API java.text.MessageFormat para ms informacin

En esta parte se especifica que el label username es el primer argumento para el error message, recordamos que el mensaje error.minlength toma 2 argumentos. El primer argumento es el nombre de la etiqueta, el segundo argumento es el valor de la variable minlength (podramos establecer el segundo elemento despus). Para establecer el primer argumento usamos el elemento arg0.

21

Struts Framework Validator

Eladio Del Razo (TribalProject)

El arg0 pasa el key del message resource , uerRegistration.userName, por lo tanto el mensaje de error para este ejemplo mostrara userRegistration.userName el cual es el label para el campo username. Configuramos el valor del minlength a 5 y el maxlength a 11. Las reglas toman parmetros, esta regla toma un parmetro que dice cul es el nmero mnimo de caracteres, para establecerlo tenemos que usar el elemento <var>.

La regla minlength tiene una variable llamada minlength (el nombre de la regla y de la variable no siempre coinciden). EL elemento <var> toma 2 sub-elementos que especifican el nombre de el parmetro y el valor del parmetro. Especificamos: El valor de las variables de la regla minlength que es el segundo argumento (arg1) en el error message si la regla se acciona. La variable maxlength es el segundo argumento (arg1) si la regla malength es activada. Entonces, en lugar de obtener el argumento del resource bundle , la obtendremos de la variable que acabamos de definir. Para esto debers especificar otro argumento. Esta vez use arg1:

Notamos que el cdigo establece el atributo rsource igual a false (resource=false) lo que significa que el segundo argumento no ser buscado en el paquete de recursos (resources), en vez de eso el segundo argumento usara la variable minlength definida en los pasos previos. Para hacer esto el atributo key es establecido con ${var:minlength}(key=${var:minlength}), que establece que el valor del segundo argumento es igual a el valor de la variable minlength (algo as como una especie de JSTL). El atributo name de arg1 establece que este segundo argumento solo es apropiado para la regla minlegth (name=minlegth), as el segundo argumento ser el valor de la variable minlength solo si hay un problema de validacin con la regla minlength.

22

Struts Framework Validator

Eladio Del Razo (TribalProject)

Recordamos que la propiedad puede ser asociada con muchas reglas porque el atributo depends (depende) del elemento campo que toma una lista delimitada por comas de las reglas asociadas con la propiedad. Por lo tanto el atributo name especifica que regla con este argumento es usado. Para correr esto comentamos nuestro viejo mtodo validate() de modo que el mtodo validate() definido ahora por el ValidatorForm se ejecute. Como parte de este registro de usuario, el cdigo anterior har que el username sea obligatorio con 5 caracteres como mnimo pero no mayor a 11, pero no asegurara que el primer carcter sea letra y los dems caracteres sean alfanumricos para eso usaremos la reglas mask. Corremos nuestro proyecto:

23

Struts Framework Validator

Eladio Del Razo (TribalProject)

REGLAS COMUNES DEL VALIDATOR


Antes de escribir nuestras reglas debemos familiarizarnos con las reglas comunes que se incluyen con el framework:

24

Struts Framework Validator

Eladio Del Razo (TribalProject)

USO DE LA REGLA MASK


Esta regla es bastante flexible y elimina la necesidad de escribir un montn de reglas de validacin personalizadas. Debido a que la regla mask usa la expresin regular parecido al estilo de programacin Perl, muy poderoso, en esta parte asumen que ya sabemos usar las expresiones regulares, si no es asi es buen momento de aprender. Pero si ya han usado las expresiones regulares en Perl, Phyton o JavaScript entonces ya estn del otro lado. Adems si usted ha utilizado el paquete de expresiones regulares que viene con el JDK 1.6 o superior, ya est en buen camino porque la sintaxis trabaja de la misma manera. Puesto que estamos escribiendo nuestras propias reglas, empezaremos desde cero, el default message a menudo no tiene sentido. Miraremos un simple mensaje por default como aquellos de minlength, maxlength, y date, Que probablemente no trabajaremos. Como queremos escribir nuestras propias reglas personalizadas con la ayuda de regular expression. Entonces necesitamos especificar nuestros mensajes personalizados que la regla mask usara. Los messages podran explicar lo que la rutina de validacin de la expresin regular hace para que el usuario final pueda entender as como solucionar el problema de validacin (Por ejemplo introducir correctamente el RFC).

PASOS
Para demostrar esto, vamos a decir que username tiene que iniciar con una letra y este puede contener letras, nmeros y guiones bajos. Partimos de que ya tenemos un nuevo proyecto de Struts (y todos esos pasos :P) Usaremos los mismos jsp La misma configuracin Struts-config.xml Crearemos nuevas reglas dentro del Validator.xml Usaremos las mismas acciones

25

Struts Framework Validator

Eladio Del Razo (TribalProject)

Este es el cdigo que necesitaremos: Validator.xml

Los pasos para usar la regla mask y definir nuestros propios mensajes personalizados son: 1) Especificar que el campo username corresponde a la regla mask:

Este paso es similar al paso realizado anteriormente, ahora el username est asociado con 4 reglas: required, minlength, maxlength y mask. Si miramos la regla mask dentro del archivo Validator-rules.xml en la parte de arriba veremos que est asociado con un mensaje llamado errors.invalid:

26

Struts Framework Validator

Eladio Del Razo (TribalProject)

Miramos el mensaje por default (errors.invalid) en el resource bundle (messageResources.properties)

Miramos en el mensaje de error anterior, si nos ponemos en los zapatos del usuario final, el mensaje anterior no es muy especfico acerca de porque el campo es invalido. Para ser ms especfico, necesitamos especificar mensajes personalizados asociados con la reglas mask. Al igual que puedes especificar argumentos preconizados (arg0, arg1) para mensajes. T puedes tambin especificar mansajes personalizados. 2) Especificar una key de mensaje de error para la regla mask. Porque un mensaje genrico porque un mensaje genrico no tendra sentido, t necesitas especificar una key para esta regla usando el elemento msg as: (dentro de Struts-config)

El elemento msg toma 2 atributos. El atributo name especifica cual regla deseamos asociar con el message key. El elemento key especifica el key a localizar dentro del resource bundle (MessageResources.properties). Por lo tanto el mensaje anterior solo se usara cuando haya un error de validacin en la mask. 3) Agregamos el mensaje al resources bundle (MessageResources.properties).

Vemos como se especifica este mensaje de error, podemos ver como el mensaje tiene la opcin de cambiar cada vez que se usa la regla mask con otro campo (oxea el {0}). El mensaje para la regla mask aplicado para un nmero telefnico va a ser muy diferente al mensaje para la regla mask aplicada a un cdigo postal. 4) Configuramos el valor de la variable mask al patrn que implementa nuestra regla de negocios. Las variable mascara de nuestra regla mascara contiene una expresin regular que puedes aplicar al campo. Si el campo no coincide con la regla, entonces no lo valida. Aqu esta las mascara para el campo username:

27

Struts Framework Validator

Eladio Del Razo (TribalProject)

La Expresion regular es un arma necesaria en el arsenal de un desarrollador web, para los recin convertidos al mundo de la expresin regular, el que tu deseas que coincida el inicio de la lnea. o minscula. Significa que esperamos que el primer carcter deber ser una letra mayscula

El {1} significa que esperamos uno de los elementos de la lista del messageResources. Significa que esperamos muchos (cero o mas) letras (a-zA-Z), numeros(0-9) Y guiones bajos(_) despues del primer carcter. Entonces no necesitariamos de la regla maxlength. Sin embargo el error messages son claros si tu divides esto entre reglas (ej. El errror message para maxrule es mas especifico que el message error de mask). Si tu deseas usar la misma mascara en mas de un formulario , por ejemplo en los formularios registration y login, en ambos contiene el campo userName. Para eso se necesitaria definir el uso de constantes globales para reutilizar las mascaras.
Es importante resaltar que las reglas son aplicadas en el orden en que fueron listadas. Por ejemplo, si teclemos *hi en el campo username y la regla minlength es listada primero en el valor del atributo depends, miraremos el error de minlength. Pero si listamos primero la mask, miraremos el error de mask.

28

Struts Framework Validator

Eladio Del Razo (TribalProject)

Struts-config.xml

29

Struts Framework Validator

Eladio Del Razo (TribalProject)

Lo ejecutamos con: http://localhost:7001/FormularioFrameworkValidator_ReglaMask/userRegistration.do

30

Das könnte Ihnen auch gefallen