SlideShare una empresa de Scribd logo
1 de 6
Grails: Framework
para el desarrollo de
aplicaciones Web (2da Parte)
Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.

                                                 un scaffolding estático, radica que el primero
                                                 genera el código necesario de la aplicación
                                                 en tiempo de ejecución, mientras que el
                                                 segundo genera el código antes de la
                                                 ejecución de la aplicación, permitiéndonos de
                                                 esta forma realizar personalizaciones en el
                                                 código de nuestra aplicación.

En la primera parte del artículo, se vio la
                                                 Generación de scaffolding
creación de la aplicación y la generación de
scaffoldings dinámicos, en ésta segunda          estático
entrega    veremos      la   generación   del
                                                 La generación de scaffold puede incluir todos
scaffolding estático, las validaciones en los
                                                 los componentes (vistas y controladores) o
formularios, personalizaciones de mensajes y
                                                 solo los componentes necesarios ya sean
las personalizaciones de vistas.
                                                 vistas o controladores.

Scaffolding estático                             Para la generación de los scaffold estáticos
                                                 debemos hacer uso de la instrucción grails 
La diferencia entre un scaffolding dinámico y    generate­all, tal como muestra la figura:




                        Gráfico 1: Generación de scaffolding estático
Esta generación se debe realizar de forma análoga para los demás dominios, en nuestro caso
para Expositor y para Conferencia.
Dentro      del     directorio                                                        y
                                   GestionEventos/grails­app/controllers
GestionEventos/grails­app/views, se encuentra el código generado para los controladores
y las vistas respectivamente.




                                Gráfico 2: Controladores generados




                                   Gráfico 3: Vistas generadas


Conexión a una base de datos
Todos deseamos que nuestras aplicaciones web se conecten en algún momento a una base de
datos (MySQL, PostgreSQL, etc), para ésto precisamos realizar lo siguiente:
         Incluir el controlador JDBC correspondiente a la base de datos en el directorio
   ✔
         GestionEventos/lib; para nuestro caso haremos uso del controlador mysql­
         connector­java­5.1.5­bin.jar, que nos permitirá establecer la conexión a una base
         de datos mySQL.
         Modificar las cadenas de conexión (base de datos, usuario, driver, etc) en el fichero
   ✔
         GestionEventos/grails­app/conf/DataSource.grovy.
Un ejemplo de este archivo es el siguiente:
dataSource {
       pooled = true
       driverClassName = quot;com.mysql.jdbc.Driverquot;
       username = quot;usuarioquot;
       password = quot;clavequot;
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='com.opensymphony.oscache.hibernate.OSCacheProvider'
}
// environment specific settings
environments {
       development {
              dataSource {
                     dbCreate = quot;updatequot; // one of 'create', 'create-drop','update'
                     url = quot;jdbc:mysql://localhost:3306/eventosquot;
              }
       }
       test {
              dataSource {
                     dbCreate = quot;updatequot;
                     url = quot;jdbc:mysql://localhost:3306/eventosquot;
              }
       }
       production {
              dataSource {
                     dbCreate = quot;updatequot;
                     url = quot;jdbc:mysql://localhost:3306/eventosquot;
              }
       }
}


Una vez realizada las adecuación del archivo que permite la conexión a la base de datos,
debemos proceder a crear la base de datos y sus respectivas tablas, para esto podemos hacer
uso de cualquier manejador de mySQL.


Validación de formularios
Una de las tareas importantes al momento de realizar un formulario web, es la validación de los
campos; dentro del framework Grails, ésta es conocida como constrains, y deben ser
consideradas dentro de los archivos de cada dominio. Un ejemplo de constrains es el
siguiente:
class Expositor {
   String paterno
   String materno
   String nombre
   String nacionalidad
   String email

   static hasMany = [conferencias:Conferencia]

   static constraints={
   paterno (blank:false,size:1..25)
   materno (blank:false,size:1..25)
   nombre (blank:false,size:1..25)
email (email:true)
    nacionalidad (inList:['Argentina','Bolivia','Brasil','Chile','Colombia'])
}
}


Valores por defecto
Si observamos en los formularios que contienen relaciones, éstas son representadas por medio
de persianas desplegables, donde los valores aparecen como <nombre de la tabla>:<ID>;
como se muestra en la figura:




                  Gráfico 4: Valores por defecto en persianas desplegables
Para que ésto cambie de apariencia y muestre el valor de uno de los campos de la tabla o la
combinación de campos, debemos crear un método que devuelva un determinado valor cada
vez que se haga referencia a un objeto, por ejemplo si realizamos los siguientes cambios:
GestionEventos/grails­app/domain/Expositor.groovy
class Expositor {
   String paterno
   String materno
   String nombre
   String nacionalidad
   String email
   static hasMany = [conferencias:Conferencia]
   String toString ()
   {
     return nombre + quot; quot; + paterno
   }
}
GestionEventos/grails­app/domain/Evento.groovy
class Evento {
   String nombre
   String ciudad
   Date inicia
   Date finaliza
   String sitioweb
   static hasMany = [conferencias:Conferencia]
   String toString ()
    {
      return nombre
    }
}


En este ejemplo hará que las persianas desplegables muestren el nombre del Expositor y del
Evento, en todos los formularios con los que mantenga relación, tal como muestra la figura
siguiente:




               Gráfico 5: Valores personalizados en persianas desplegables
Referencias
[1]    http://www.grails.org
[2]    Getting Started with Grails
[3]    The Definitive Guide to Grails


Autor




Esteban Saavedra López
Líder de la Comunidad ATIX (Oruro – Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Org tutorial struts_2010
Org tutorial struts_2010Org tutorial struts_2010
Org tutorial struts_2010
 
Rails intro
Rails introRails intro
Rails intro
 
Semana 4 Estructura y componentes SPA
Semana 4  Estructura y componentes SPASemana 4  Estructura y componentes SPA
Semana 4 Estructura y componentes SPA
 
Java server faces
Java server facesJava server faces
Java server faces
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
Semana 5 Angular Rutas y Controladores
Semana 5   Angular Rutas y ControladoresSemana 5   Angular Rutas y Controladores
Semana 5 Angular Rutas y Controladores
 
Introducción a Knockout
Introducción a KnockoutIntroducción a Knockout
Introducción a Knockout
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
Presentacion wpf
Presentacion wpfPresentacion wpf
Presentacion wpf
 
Herramientas de trabajo (3)
Herramientas de trabajo (3)Herramientas de trabajo (3)
Herramientas de trabajo (3)
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
Angularjs
AngularjsAngularjs
Angularjs
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
Curso JSF - Conceptos Basicos
Curso JSF - Conceptos BasicosCurso JSF - Conceptos Basicos
Curso JSF - Conceptos Basicos
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 

Destacado

Mmm lindos lindos
Mmm lindos lindosMmm lindos lindos
Mmm lindos lindoseryponyta
 
Avisos Sabado 24 De Mayo (Final)
Avisos Sabado 24 De Mayo (Final)Avisos Sabado 24 De Mayo (Final)
Avisos Sabado 24 De Mayo (Final)fuerzajoven
 
YP-S3 Vorschau
YP-S3 VorschauYP-S3 Vorschau
YP-S3 Vorschaumarco678
 
Manifest Identitaetsmanagement
Manifest IdentitaetsmanagementManifest Identitaetsmanagement
Manifest IdentitaetsmanagementTrendbüro
 
ODMF Präsentation 2005
ODMF Präsentation 2005ODMF Präsentation 2005
ODMF Präsentation 2005Philipp Sauber
 
EspañOl Para Los Empleados De Los Almacenes Grandes
EspañOl Para Los Empleados De Los Almacenes GrandesEspañOl Para Los Empleados De Los Almacenes Grandes
EspañOl Para Los Empleados De Los Almacenes Grandesjjr65
 
Tr Ab Jo De Po We R P Oin2
Tr Ab Jo De Po We R P Oin2Tr Ab Jo De Po We R P Oin2
Tr Ab Jo De Po We R P Oin2anuxii
 
WOLLEN SIE Q1 SCHAUEN?
WOLLEN SIE Q1 SCHAUEN?WOLLEN SIE Q1 SCHAUEN?
WOLLEN SIE Q1 SCHAUEN?marco678
 
Samsung YP-S9 Benutzerhandbuch
Samsung YP-S9 BenutzerhandbuchSamsung YP-S9 Benutzerhandbuch
Samsung YP-S9 Benutzerhandbuchmarco678
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungEduard Hildebrandt
 
Calendss Layout 1
Calendss Layout 1Calendss Layout 1
Calendss Layout 1guestf982e6
 

Destacado (20)

Mmm lindos lindos
Mmm lindos lindosMmm lindos lindos
Mmm lindos lindos
 
Avisos Sabado 24 De Mayo (Final)
Avisos Sabado 24 De Mayo (Final)Avisos Sabado 24 De Mayo (Final)
Avisos Sabado 24 De Mayo (Final)
 
YP-S3 Vorschau
YP-S3 VorschauYP-S3 Vorschau
YP-S3 Vorschau
 
Manifest Identitaetsmanagement
Manifest IdentitaetsmanagementManifest Identitaetsmanagement
Manifest Identitaetsmanagement
 
Netzwerke
NetzwerkeNetzwerke
Netzwerke
 
ODMF Präsentation 2005
ODMF Präsentation 2005ODMF Präsentation 2005
ODMF Präsentation 2005
 
EspañOl Para Los Empleados De Los Almacenes Grandes
EspañOl Para Los Empleados De Los Almacenes GrandesEspañOl Para Los Empleados De Los Almacenes Grandes
EspañOl Para Los Empleados De Los Almacenes Grandes
 
Sommerferien
SommerferienSommerferien
Sommerferien
 
Tr Ab Jo De Po We R P Oin2
Tr Ab Jo De Po We R P Oin2Tr Ab Jo De Po We R P Oin2
Tr Ab Jo De Po We R P Oin2
 
ZOEPEKES
ZOEPEKESZOEPEKES
ZOEPEKES
 
100dias
100dias100dias
100dias
 
WOLLEN SIE Q1 SCHAUEN?
WOLLEN SIE Q1 SCHAUEN?WOLLEN SIE Q1 SCHAUEN?
WOLLEN SIE Q1 SCHAUEN?
 
Samsung YP-S9 Benutzerhandbuch
Samsung YP-S9 BenutzerhandbuchSamsung YP-S9 Benutzerhandbuch
Samsung YP-S9 Benutzerhandbuch
 
El Sector Terciario DDC
El Sector Terciario DDCEl Sector Terciario DDC
El Sector Terciario DDC
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
Calendss Layout 1
Calendss Layout 1Calendss Layout 1
Calendss Layout 1
 
Unterstützung von individuellen Reflexionsprozessen
Unterstützung von individuellen ReflexionsprozessenUnterstützung von individuellen Reflexionsprozessen
Unterstützung von individuellen Reflexionsprozessen
 
Venezuela
VenezuelaVenezuela
Venezuela
 
Teo. de la Personalidad
Teo. de la PersonalidadTeo. de la Personalidad
Teo. de la Personalidad
 
ATIX02
ATIX02ATIX02
ATIX02
 

Similar a Grails: Generación de scaffolding estático y validación de formularios

Similar a Grails: Generación de scaffolding estático y validación de formularios (20)

Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 
Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Web
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
 
Introducción a Backbone
Introducción a BackboneIntroducción a Backbone
Introducción a Backbone
 
Manual
ManualManual
Manual
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
ejemplo de diseño
ejemplo de diseñoejemplo de diseño
ejemplo de diseño
 
Portabilidad y transportabilidad
Portabilidad y transportabilidadPortabilidad y transportabilidad
Portabilidad y transportabilidad
 
ABI-Box
ABI-BoxABI-Box
ABI-Box
 
La magia de Flutter
La magia de FlutterLa magia de Flutter
La magia de Flutter
 
Video
VideoVideo
Video
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.Forms
 
manual-power-builder
manual-power-buildermanual-power-builder
manual-power-builder
 
Net framework version 4.5
Net framework version 4.5Net framework version 4.5
Net framework version 4.5
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Grails
GrailsGrails
Grails
 
Tema 5
Tema 5Tema 5
Tema 5
 
Servicios web
Servicios webServicios web
Servicios web
 

Más de Esteban Saavedra (20)

Atix30
Atix30Atix30
Atix30
 
Atix29
Atix29Atix29
Atix29
 
Atix28
Atix28Atix28
Atix28
 
Atix27
Atix27Atix27
Atix27
 
Atix26
Atix26Atix26
Atix26
 
Atix25
Atix25Atix25
Atix25
 
Rabbitmq
RabbitmqRabbitmq
Rabbitmq
 
Ansible
AnsibleAnsible
Ansible
 
Perl
PerlPerl
Perl
 
Atix24
Atix24Atix24
Atix24
 
Atix23
Atix23Atix23
Atix23
 
Lineas Base Migracion a Software Libre
Lineas Base Migracion a Software LibreLineas Base Migracion a Software Libre
Lineas Base Migracion a Software Libre
 
Seguridad Sistemas de Gobierno
Seguridad Sistemas de GobiernoSeguridad Sistemas de Gobierno
Seguridad Sistemas de Gobierno
 
Tunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y FirewallsTunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y Firewalls
 
Bi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar EmpresasBi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar Empresas
 
Clouds privadas
Clouds privadasClouds privadas
Clouds privadas
 
Introduccion Computacion Ubicua
Introduccion Computacion UbicuaIntroduccion Computacion Ubicua
Introduccion Computacion Ubicua
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Avances Tecnologicos
Avances TecnologicosAvances Tecnologicos
Avances Tecnologicos
 
Dni Electronico Bolivia
Dni Electronico BoliviaDni Electronico Bolivia
Dni Electronico Bolivia
 

Último

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 

Último (20)

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 

Grails: Generación de scaffolding estático y validación de formularios

  • 1. Grails: Framework para el desarrollo de aplicaciones Web (2da Parte) Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla, rápida y divertida. un scaffolding estático, radica que el primero genera el código necesario de la aplicación en tiempo de ejecución, mientras que el segundo genera el código antes de la ejecución de la aplicación, permitiéndonos de esta forma realizar personalizaciones en el código de nuestra aplicación. En la primera parte del artículo, se vio la Generación de scaffolding creación de la aplicación y la generación de scaffoldings dinámicos, en ésta segunda estático entrega veremos la generación del La generación de scaffold puede incluir todos scaffolding estático, las validaciones en los los componentes (vistas y controladores) o formularios, personalizaciones de mensajes y solo los componentes necesarios ya sean las personalizaciones de vistas. vistas o controladores. Scaffolding estático Para la generación de los scaffold estáticos debemos hacer uso de la instrucción grails  La diferencia entre un scaffolding dinámico y generate­all, tal como muestra la figura: Gráfico 1: Generación de scaffolding estático
  • 2. Esta generación se debe realizar de forma análoga para los demás dominios, en nuestro caso para Expositor y para Conferencia. Dentro del directorio y GestionEventos/grails­app/controllers GestionEventos/grails­app/views, se encuentra el código generado para los controladores y las vistas respectivamente. Gráfico 2: Controladores generados Gráfico 3: Vistas generadas Conexión a una base de datos Todos deseamos que nuestras aplicaciones web se conecten en algún momento a una base de datos (MySQL, PostgreSQL, etc), para ésto precisamos realizar lo siguiente: Incluir el controlador JDBC correspondiente a la base de datos en el directorio ✔ GestionEventos/lib; para nuestro caso haremos uso del controlador mysql­ connector­java­5.1.5­bin.jar, que nos permitirá establecer la conexión a una base de datos mySQL. Modificar las cadenas de conexión (base de datos, usuario, driver, etc) en el fichero ✔ GestionEventos/grails­app/conf/DataSource.grovy.
  • 3. Un ejemplo de este archivo es el siguiente: dataSource { pooled = true driverClassName = quot;com.mysql.jdbc.Driverquot; username = quot;usuarioquot; password = quot;clavequot; } hibernate { cache.use_second_level_cache=true cache.use_query_cache=true cache.provider_class='com.opensymphony.oscache.hibernate.OSCacheProvider' } // environment specific settings environments { development { dataSource { dbCreate = quot;updatequot; // one of 'create', 'create-drop','update' url = quot;jdbc:mysql://localhost:3306/eventosquot; } } test { dataSource { dbCreate = quot;updatequot; url = quot;jdbc:mysql://localhost:3306/eventosquot; } } production { dataSource { dbCreate = quot;updatequot; url = quot;jdbc:mysql://localhost:3306/eventosquot; } } } Una vez realizada las adecuación del archivo que permite la conexión a la base de datos, debemos proceder a crear la base de datos y sus respectivas tablas, para esto podemos hacer uso de cualquier manejador de mySQL. Validación de formularios Una de las tareas importantes al momento de realizar un formulario web, es la validación de los campos; dentro del framework Grails, ésta es conocida como constrains, y deben ser consideradas dentro de los archivos de cada dominio. Un ejemplo de constrains es el siguiente: class Expositor { String paterno String materno String nombre String nacionalidad String email static hasMany = [conferencias:Conferencia] static constraints={ paterno (blank:false,size:1..25) materno (blank:false,size:1..25) nombre (blank:false,size:1..25)
  • 4. email (email:true) nacionalidad (inList:['Argentina','Bolivia','Brasil','Chile','Colombia']) } } Valores por defecto Si observamos en los formularios que contienen relaciones, éstas son representadas por medio de persianas desplegables, donde los valores aparecen como <nombre de la tabla>:<ID>; como se muestra en la figura: Gráfico 4: Valores por defecto en persianas desplegables Para que ésto cambie de apariencia y muestre el valor de uno de los campos de la tabla o la combinación de campos, debemos crear un método que devuelva un determinado valor cada vez que se haga referencia a un objeto, por ejemplo si realizamos los siguientes cambios: GestionEventos/grails­app/domain/Expositor.groovy class Expositor { String paterno String materno String nombre String nacionalidad String email static hasMany = [conferencias:Conferencia] String toString () { return nombre + quot; quot; + paterno } }
  • 5. GestionEventos/grails­app/domain/Evento.groovy class Evento { String nombre String ciudad Date inicia Date finaliza String sitioweb static hasMany = [conferencias:Conferencia] String toString () { return nombre } } En este ejemplo hará que las persianas desplegables muestren el nombre del Expositor y del Evento, en todos los formularios con los que mantenga relación, tal como muestra la figura siguiente: Gráfico 5: Valores personalizados en persianas desplegables
  • 6. Referencias [1] http://www.grails.org [2] Getting Started with Grails [3] The Definitive Guide to Grails Autor Esteban Saavedra López Líder de la Comunidad ATIX (Oruro – Bolivia) Activista de Software Libre en Bolivia jesaavedra@opentelematics.org http://jesaavedra.opentelematics.org