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

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (16)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

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