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

09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
UTN
 

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

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
 
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
jjr65
 
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
anuxii
 

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: Framework para el desarrollo de aplicaciones Web No 2

Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
cok12v
 
Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Web
daniel ridan
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
oswchavez
 
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
Antonio Palomares Sender
 
Portabilidad y transportabilidad
Portabilidad y transportabilidadPortabilidad y transportabilidad
Portabilidad y transportabilidad
juanmanuelsalgado
 
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
Steven Gomez
 

Similar a Grails: Framework para el desarrollo de aplicaciones Web No 2 (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

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

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
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
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
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

Grails: Framework para el desarrollo de aplicaciones Web No 2

  • 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