6
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

tel./fax: +34 91 675 33 06 [email protected] - www ... · de datos NoSQL (Not Only SQL) ... como comprobaciones en base de datos o en cualquier otra fuente ... añadimos la lógica

Embed Size (px)

Citation preview

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

E-mail:

Contraseña:

Inicio Quiénes somos Tutoriales Formación Comparador de salarios Nuestro libro Charlas Más

Deseo registrarmeHe olvidado mis datos deacceso

Entrar

Estás en:Inicio Tutoriales CRUD con Spring MVC Portlet (III): Añadiendo validación al formulario

Catálogo de serviciosAutentia

Últimas Noticias

XIV Charla Autentia -ZK - Vídeos y

Material

Hablando decoaching ágil,

milagro nocturo ypruebas de vida

XIII Charla Autentia- AOS y TDD -

Vídeos y Material

Las metodologíaságiles como el

catalizador del cambio

XIV Charla Autentia -ZK

Histórico deNOTICIAS

Últimos Tutoriales

Tutorial básico debases de datos en

Java mediante JDBC

Introducción a basesde datos SQL en

Java.

Introducción a basesde datos NoSQL

(Not Only SQL)

Share |

DESARROLLADO POR:Rubén Aguilera Díaz-Heredero

Consultor tecnológico de desarrollo de proyectosinformáticos.

Ingeniero en Informática, especialidad en Ingenieríadel Software

Puedes encontrarme en Autentia: Ofrecemos serviciosde soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Regístrate para votar

CRUD con Spring MVC Portlet (III): Añadiendovalidación al formulario

0. Índice de contenidos.

1. Entorno2. Introducción3. Añadiendo validación al formulario4. Conclusiones

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

Hardware: Portátil Mac Book Pro 17" (2,6 Ghz Intel Core i7, 8 GB DDR3)Sistema Operativo: Mac OS X Snow Leopard 10.6.4Spring MVC Portlet 3.0.4Maven 2.2.1Eclipse 3.6 (Helios) con M2EclipseLiferay 6.0.5

2. Introducción

Este tutorial es la tercera parte de una serie, por lo que te recomiendo que antes leas:

CRUD con Spring MVC PortletCRUD con Spring MVC Portlet (II)

En esta tercera parte vamos a ver cómo añadir validación a nuestro formulario de entrada de datos ycómo realizar pruebas unitarias de nuestro portlet, a fin de poder probar la lógica del portlet sinnecesidad de arrancar el gestor de portales.

3. Añadiendo validación al formulario

1Fecha de publicación del tutorial: 2011-02-27

Anuncios Google Java Tutorial Java Swing Online Java Class PDF File Java

Síguenos a través de:

Informes dinámicoscon DynamicJasper

Banners animados:Cómo realizar

animaciones en CSS3

Últimos Tutoriales delAutor

CRUD con SpringMVC Portlet (II):

Creando el listado y lasacciones de modificacióny borrado

CRUD con SpringMVC Portlet:

Creando el proyecto y laacción de alta

Librería de acceso adatos con Spring y

JPA

Ejemplo de SwingWorker: ¿Por qué se

me congela la interfaz?

Utilización deCommons Digester

para un sistema depreferenciasconfigurable

Últimas ofertas deempleo

2010-10-11Comercial - Ventas -SEVILLA.

2010-08-30Otras - Electricidad -BARCELONA.

2010-08-24Otras Sin catalogar -LUGO.

2010-06-25T. Información -Analista /

Programador -BARCELONA.

Para añadir validación a nuestro formulario de entrada de datos con Spring tenemos que implementarun tipo de servicio que se conoce como Validator. Que no es más que una clase que implementa lainterfaz Validator de Spring.

Para nuestro caso, queremos que todos los campos sean obligatorios y que no podamos dar de alta aninguna persona cuyo nombre sea "Pepe" (No es que tenga nada en contra de las personas que sellamen "Pepe", es sólo un ejemplo)

view plain print ?

!"#$ !"#$"%&$%&'#()*+,*-(#./0-,1%0)2'3%/&0*4+*#3(4-2(*&0.5$$!6#$ $$!7#$ '(!)*+$&01#./0-,180('+9&0:#.*+0+&*;/+#<+03-%+5$$!=#$ '(!)*+$&01#./0-,180('+9&0:#3(4-2(*-&,#>00&0.5$$!?#$ '(!)*+$&01#./0-,180('+9&0:#3(4-2(*-&,#@(4-2(*-&,A*-4.5$$!B#$ '(!)*+$&01#./0-,180('+9&0:#3(4-2(*-&,#@(4-2(*&05$$!C#$ $$!D#$ '(!)*+$%&'#()*+,*-(#./0-,1%0)2'3%/&0*4+*#8&0'.#E+0.&,(F&0'5$$!G#$ $$"!#$ H<+03-%+$$""#$ !,-.'#$#."//$E+0.&,(F&0'@(4-2(*&0$'(!.&(&0+/$@(4-2(*&0I$$"6#$ $$"7#$ $$$$!*'1"+&$/+"+'#$2'0".$<*0-,1$JKLMN>OJKOE>NLPQPRK$S$TE+/+T5$$"=#$ $$$$$$"?#$ $$$$!,-.'#$-)).&"0$.)//&0*.UV4(..WXY$%4(ZZ[$I$$"B#$ $$$$$$$$*&+,*0$E+0.&,(F&0'@(4-2(*&0##."//#-.\..-1,(]4+F0&'U%4(ZZ[5$$"C#$ $$$$^$$"D#$ $$"G#$ $$$$!,-.'#$1)'3$3(4-2(*+UK]_+%*$&]_`$>00&0.$+00&0.[$I$$6!#$ $$$$$$$$E+0.&,(F&0'$/+0.&,(F&0'$S$UE+0.&,(F&0'[$&]_5$$6"#$ $$$$$$$$3(4-2(*+J&']0+U/+0.&,(F&0'`$+00&0.[5$$66#$ $$$$$$$$3(4-2(*+\/+44-2&.U/+0.&,(F&0'`$+00&0.[5$$67#$ $$$$$$$$3(4-2(*+R-0+%%-&,U/+0.&,(F&0'`$+00&0.[5$$6=#$ $$$$^$$6?#$ $$$$$$6B#$ $$$$!*'1"+&$1)'3$3(4-2(*+J&']0+UE+0.&,(F&0'$/+0.&,(F&0'`$>00&0.$+00&0.[I$$6C#$ $$$$$$$$@(4-2(*-&,A*-4.#0+_+%*P8>'/*;K0ab-*+./(%+U+00&0.`$T,&']0+T`$$$6D#$ $$$$$$$$$$$$$$$$T+00&0.#0+c)-0+2T`$0&4$<*0-,1de

ITJ&']0+T^`$T>4$%('/&$fJ&']0+f$+.$&]4-1(*&0-&$2+8+%*&T[5$$6G#$ $$$$$$$$'2$UJKLMN>OJKOE>NLPQPRK#+c)(4.U/+0.&,(F&0'#1+*J&']0+U[[[I$$7!#$ $$$$$$$$$$$$+00&0.#0+_+%*@(4)+UT,&']0+T`$T/+0.&,(#,&']0+g,&g/+0'-*-2&T`$$$7"#$ $$$$$$$$$$$$$$$$$$$$0&4$<*0-,1deIJKLMN>OJKOE>NLPQPRK^`$$$76#$ $$$$$$$$$$$$$$$$$$$$0&4$<*0-,1M)-42+0UTJ&']0+$,&$/+0'-*-2&$fT[#(//+,2UJKLMN>OJKOE>NLPQPRK[#(//+,2UTfT[#*&<*0-,1U[[5$$77#$ $$$$$$$$^$$7=#$ $$$$^$$7?#$ $$$$$$7B#$ $$$$!*'1"+&$1)'3$3(4-2(*+\/+44-2&.UE+0.&,(F&0'$/+0.&,(F&0'`$>00&0.$+00&0.[I$$7C#$ $$$$$$$$@(4-2(*-&,A*-4.#0+_+%*P8>'/*;K0ab-*+./(%+U+00&0.`$T(/+44-2&.T`$$$7D#$ $$$$$$$$$$$$$$$$T+00&0.#0+c)-0+2T`$0&4$<*0-,1de

IT\/+44-2&.T^`$T>4$%('/&$f\/+44-2&.f$+.$&]4-1(*&0-&$2+8+%*&T[5$$7G#$ $$$$^$$=!#$ $$$$$$="#$ $$$$!*'1"+&$1)'3$3(4-2(*+R-0+%%-&,UE+0.&,(F&0'$/+0.&,(F&0'`$>00&0.$+00&0.[I$$=6#$ $$$$$$$$@(4-2(*-&,A*-4.#0+_+%*P8>'/*;K0ab-*+./(%+U+00&0.`$T2-0+%%-&,T`$$$=7#$ $$$$$$$$$$$$$$$$T+00&0.#0+c)-0+2T`$0&4$<*0-,1de

ITR-0+%%-h,T$^`$T>4$%('/&$fR-0+%%-h,f$+.$&]4-1(*&0-&$2+8+%*&T[5$$==#$ $$$$$$$$$$=?#$ $$$$^$$=B#$ $$$$$$=C#$ ^$$

Esta interfaz nos obliga a implementar dos métodos: supports y validate.

El primero de ellos establece si el validador puede validar instancias de la clase sumimistrada, unaimplementación típica de este método la podemos encontrar en el ejemplo de arriba.

El método validate es el que va a llevar a cabo todas las validaciones que consideremos necesariaspara nuestro formulario. Es una buena práctica dividir este método en al menos tantas funciones comocampos queremos validar de nuestro formulario.

Para la validación de algo tan típico como determinar si el campo de entrada está vacío, podemosutilizar la clase ValidationUtils de Spring, donde podemos determinar el nombre del campo afectado,que mensaje internacionalizado e incluso parametrizado queremos mostrar, y en caso de no encontrarla clave del mensaje, poder mostrar un texto por defecto.

Para validaciones más específicas, como comprobaciones en base de datos o en cualquier otra fuentede datos, siempre podemos contar con el método Errors.rejectValue() como hemos visto en elejemplo.

Después vamos a añadir los mensajes de error utilizados en nuestro fichero messages.properties.

view plain print ?

!"#$ %&&'&(#&%)*+&%,-./$0123'$445!644$%($'7/+819'&+'$$!:#$ 3%&(';1#;'27&%<;'<3%&2+9+,'-='27&%$;'$3%&2+9+,'$445!644$$

Ahora editamos el fichero detalle_persona.jsp para incluir el código que muestra los errores.

view plain print ?

!"#$ !>?$918/+7$*&+-@A993BCCD1E1#(*;#0'2C3'&9/%9@$3&%F+G-@3'&9/%9@>"$$!:#$ !>?$918/+7$*&+-@A993BCCHHH#(3&+;8F&12%H'&I#'&8C918(@$3&%F+G-@(3&+;8@>"$$!J#$ !>?$918/+7$*&+-@A993BCCHHH#(3&+;8F&12%H'&I#'&8C918(CF'&2@$3&%F+G-@F'&2@>"$$!K#$ $$!L#$ !#$%&'(&)*(+,-(./0(1&2$3"$$!M#$ $$!N#$ !#$%&'(&)41&,$-5%'$E1&-@%D%0*91&O00+';PQR@$;12%-@%D%0*91&O00+';@"$$!S#$ $$$$!#$%&'(&)#4%46$;12%-@100+';@$E1/*%-@T5F*9*&1O00+';6@$3"$$!U#$ !3#$%&'(&)41&,$-5%'"$$"!#$ $$""#$ !+$%6)+$%6$109+';-@T5%D%0*91&O00+';PQR6@$0'221;,;12%-@3%&(';1V'&2@"$$":#$ $$$$!+$%6)7,**(-$319A-@+,W%&(';1@3"$$"J#$ $$$$!+$%6)(%%$%2$319A-@X@3"$$"K#$ $$$$!#"$$"L#$ $$$$$$$$!2#%,-8)6(2248($0',%-@3%&(';1#;'27&%@$3"$$"M#$ $$$$$$$$!+$%6),-#5&$319A-@;'27&%@$3"$$"N#$ $$$$$$$$!+$%6)(%%$%2$319A-@;'27&%@3"$$"S#$ $$$$!3#"$$"U#$ $$$$!#"$$:!#$ $$$$$$$$!2#%,-8)6(2248($0',%-@3%&(';1#13%//+,'(@$3"$$:"#$ $$$$$$$$!+$%6),-#5&$319A-@13%//+,'(@$3"$$::#$ $$$$$$$$!+$%6)(%%$%2$319A-@13%//+,'(@3"$$:J#$ $$$$!3#"$$:K#$ $$$$!#"$$:L#$ $$$$$$$$!2#%,-8)6(2248($0',%-@3%&(';1#,+&%00+';@$3"$$:M#$ $$$$$$$$!+$%6),-#5&$319A-@,+&%00+';@$3"$$:N#$ $$$$$$$$!+$%6)(%%$%2$319A-@,+&%00+';@3"$$:S#$ $$$$!3#"$$:U#$ $$$$!2#%,-8)6(2248($0',%-@T5F*9*&1O00+';6@$E1&-@F'&2.;E+1&@"!32#%,-8)6(2248("$$J!#$ $$$$!2#%,-8)6(2248($0',%-@F'&2#01;0%/1&@$E1&-@F'&2Y1;0%/1&@"!32#%,-8)6(2248("$$J"#$ $$$$!,-#5&$9Z3%-@(*72+9@$E1/*%-@T5F'&2.;E+1&6@3"$$J:#$ $$$$!,-#5&$9Z3%-@(*72+9@$E1/*%-@T5F'&2Y1;0%/1&6@$;12%-@F'&2#01;0%/1&@3"$$JJ#$ !3+$%6)+$%6"$$

Como vemos, utilizamos la etiqueta <form:errors/> podemos mostrar el conjunto de errores quedetecta nuestro validador estableciendo el atributo path a *, o los podemos mostrar asociados a sucampo, estableciendo en el atributo path el nombre del campo.

Por último, añadimos la lógica de validación a nuestro controlador. En nuestro caso, los únicos puntosde entrada de datos que necesitan validación son la inserción y la modificación que quedarían de estaforma:

Anímate y coméntanos lo que pienses sobre este TUTORIAL:

view plain print ?

!"#$ %&'()'*+,-../012.-3-4*$5$678-9-:#.;3+<'+#-=+/;05'8'=)+-3>==/;07?$7-==/;05=3)@#-<+-7AB$$!C#$ $$$$!"#$%&$%'$()*+,$-#)'$/0*'3+-3D'3*;0-2$$!E#$ $$$$$$$$$$$$%,;@'<>++3/F)+'27.'3*;0-G;347B$D'3*;0-G;34$.'3*;0-G;34?$H/0@/01&'*)<+$3'*)<+?$$!I#$ $$$$$$$$$$$$%&'()'*+D-3-423'()/3'@5(+,.%?$9-<)'57J;34#=-0='<-37B$K+3/01$=-0='<-3?$,;@'<$4;@'<?$$$!L#$ $$$$$$$$$$$$>=+/;0&'*.;0*'$3'*.;0*'?$%&'()'*+D-3-427-==/;07B$K+3/01$-==/;0B$6$$!M#$ $$$$$$$$$$!N#$ $$$$$$$$)($2*/O*)-3/;P;Q-0='<->==/;02=-0='<-3BB$6$$!R#$ $$$$$$$$$$$$.'3*;0-G;34S-</@-+;3#9-</@-+'2.'3*;0-G;34?$3'*)<+BT$$!U#$ $$$$$$$$$$$$)($2V3'*)<+#W-*X33;3*2BB6$$"!#$ $$$$$$$$$$$$$$$$.'3*;0-Y>Z#/0*'3+2.'3*;0-G;34#1'+D'3*;0-2BBT$$""#$ $$$$$$$$$$$$$$$$4;@'<#-@@>++3/F)+'274*1*+-+)*7?$4'**-1'*#1'+,'**-1'27*+-+)*#;[7?$*/,,?$\;=-<'Q;0+':+];<@'3#1'+\;=-<'2BBBT$$"C#$ $$$$$$$$$$$$A%,.%6$$"E#$ $$$$$$$$$$$$$$$$4;@'<#-@@>++3/F)+'27J)+)3->==/;07?$-==/;0BT$$"I#$ $$$$$$$$$$$$$$$$3'*.;0*'#*'+&'0@'3D-3-4'+'3273'@/3'=+7?$7/3>Y'+-<<'7BT$$"L#$ $$$$$$$$$$$$A$$"M#$ $$$$$$$$A$$"N#$ $$$$A$$"R#$ $$$$$$"U#$ $$$$%&'()'*+,-../012.-3-4*$5$678-9-:#.;3+<'+#-=+/;05'8'=)+-3>==/;07?$7-==/;05=3)@#4;@/J/=-=/;07AB$$C!#$ $$$$!"#$%&$%'$()*+,$-#)'$4;@/J/=-3D'3*;0-2$$C"#$ $$$$$$$$$$$$%,;@'<>++3/F)+'27.'3*;0-G;347B$D'3*;0-G;34$.'3*;0-G;34?$H/0@/01&'*)<+$3'*)<+?$$CC#$ $$$$$$$$$$$$%&'()'*+D-3-423'()/3'@5(+,.%?$9-<)'57J;34#=-0='<-37B$K+3/01$=-0='<-3?$,;@'<$4;@'<?$$CE#$ $$$$$$$$$$$$>=+/;0&'*.;0*'$3'*.;0*'?$%&'()'*+D-3-427-==/;07B$K+3/01$-==/;0B$6$$CI#$ $$$$$$$$$$CL#$ $$$$$$$$)($2*/O*)-3/;P;Q-0='<->==/;02=-0='<-3BB$6$$CM#$ $$$$$$$$$$$$.'3*;0-G;34S-</@-+;3#9-</@-+'2.'3*;0-G;34?$3'*)<+BT$$CN#$ $$$$$$$$$$$$)($2V3'*)<+#W-*X33;3*2BB6$$CR#$ $$$$$$$$$$$$$$$$.'3*;0-Y>Z#).@-+'2.'3*;0-G;34#1'+D'3*;0-2BBT$$CU#$ $$$$$$$$$$$$$$$$4;@'<#-@@>++3/F)+'274*1*+-+)*7?$4'**-1'*#1'+,'**-1'27*+-+)*#;[7?$*/,,?$\;=-<'Q;0+':+];<@'3#1'+\;=-<'2BBBT$$E!#$ $$$$$$$$$$$$A%,.%6$$E"#$ $$$$$$$$$$$$$$$$4;@'<#-@@>++3/F)+'27J)+)3->==/;07?$-==/;0BT$$EC#$ $$$$$$$$$$$$$$$$3'*.;0*'#*'+&'0@'3D-3-4'+'3273'@/3'=+7?$7/3>Y'+-<<'7BT$$$$EE#$ $$$$$$$$$$$$A$$EI#$ $$$$$$$$A$$EL#$ $$$$A$$

En los dos métodos hacemos lo mismo. Llamamos al validador el cual mediante el método hasErrors()nos dice si ha habido algún error de validación. Si lo ha habido, hacemos un redirect a la pantalla dedetalle volviendo a establecer el valor de futuraAccion para que no se pierda.

Hemos añadido más elementos de entrada a las especificaciones del método. El más importante esBindingResult donde Spring almacena el resultado de validación del formulario y que obligatoriamentedebe ir definido justo después de la definición del formulario, exactamente como se muestra en elejemplo.

Ahora cuando añadimos o modificamos datos debemos encontrarnos con mensajes de este estilo.

6. Conclusiones

Ahora ya tenemos nuestro formulario a prueba de bombas gracias a los validadores de Spring. En elpróximo tutorial de este serie veremos como realizar pruebas unitarias a este desarrollo.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; contu ayuda, podemos ofrecerte un mejor servicio.

Enviar comentario (Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

COMENTARIOS

Copyright 2003-2011 © All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia |Contacto