Ejemplo automático con Grails

De ChuWiki

Una vez instalado Grails vamos a hacer un pequeño ejemplo básico, usando directamente los scripts pre construidos que nos ofrece grails.

En primer lugar, desde una ventana de comandos (cmd de windows, bash de linux, etc), vamos al directorio donde queramos crear nuestro proyecto grails. Nos bastará ejecutar el comando

grails create-app hola-mundo-grails

para crear el proyecto hola-mundo-grails (o el nombre que queramos ponerle). La estructura de directorios creada será

C:\UN_PATH\HOLA-MUNDO-GRAILS
├───.settings
├───grails-app
│   ├───conf
│   │   ├───hibernate
│   │   └───spring
│   ├───controllers
│   ├───domain
│   ├───i18n
│   ├───services
│   ├───taglib
│   ├───utils
│   └───views
│       └───layouts
├───lib
├───scripts
├───src
│   ├───groovy
│   └───java
├───test
│   ├───integration
│   └───unit
└───web-app
    ├───css
    ├───images
    │   └───skin
    ├───js
    │   └───prototype
    ├───META-INF
    └───WEB-INF
        └───tld

Vamos ahora a crear una clase de nuestro modelo de datos. Esta clase será persistente en base de datos. Para ello, nos metemos en el directorio HOLA-MUNDO-GRAILS y ejecutamos el comando

cd C:\UN_PATH\HOLA-MUNDO-GRAILS
grails create-domain-class com.chuidiang.ejemplos.grails.Persona

Esto creará la clase Persona.groovy dentro del directorio grails-app\domain, por supuesto, añadiendo todo el path del paquete com.chuidiang.ejemplos.grails

C:\UN_PATH\HOLA-MUNDO-GRAILS
├───.settings
├───grails-app
│   ├───conf
│   │   ├───hibernate
│   │   └───spring
│   ├───controllers
│   ├───domain
│   │   └───com
│   │       └───chuidiang
│   │           └───ejemplos
│   │               └───grails --> Persona.groovy
...

Ahora, con nuestro editor favorito, editamos esa clase y le ponemos unos cuantos atributos.

package com.chuidiang.ejemplos.grails

class Persona {
    Date fechaNacimiento
    String nombre
    String telefono
    int edad   
    static constraints = {
    }
}

Hemos añadido los campos fechaNacimiento, nombre, telefono y edad de tipos propios de java. El resto lo había creado automáticamente la llamada a grails create-domain-class

Ahora, para generar el resto de la aplicación, escribimos

grails generate-all com.chuidiang.ejemplos.grails.Persona

Esto generará en los directorios grails-app/controller y grails-app/view los controladores y vistas necesarias para poder ver una lista de personas, crear personas nuevas, editar y borrar pesonas existentes.

Ahora podemos arrancar la aplicación con

grails -Dserver.port=8081 run-app

donde -Dserver.port indica el puerto en el que queremos que se lance la aplicación, será 8080 si no ponemos esta opción. Una vez arrancado y si no ha habido errores, bastará con entrar en el navegador en http://localhost:8081/hola-mundo-controller y veremos una pantalla que indica que los controladores disponibles son "PersonaController". Pinchando ese enlace, llegaremos a un listado de personas (vacío) y tenemos enlaces para crear, editar y borrar personas.

Esta aplicación es completamente funcional y utilizará una base de datos HSQLDB en memoria por defecto. Eso sí, arrancando la aplicación de esta manera, la base de datos está en memoria y cuando detengamos la aplicación, perderemos todos los datos.

Nos quedaría configurar la aplicación para que use otra base de datos real, pero eso es para otro tutorial.

Unas pantallas de la aplicación en funcionamiento: