El Blog de Ana Buigues » grails http://anabuigues.com Wed, 07 Dec 2011 16:07:47 +0000 es-ES hourly 1 http://wordpress.org/?v=3.4 Implementación de un Scaffolding con Grails http://anabuigues.com/2011/09/12/implementacion-de-un-scaffolding-con-grails/ http://anabuigues.com/2011/09/12/implementacion-de-un-scaffolding-con-grails/#comments Mon, 12 Sep 2011 17:47:13 +0000 Ana Buigues http://anabuigues.com/?p=3604 Problema: necesito crear una interfaz web sencilla para rellenar una base de datos.

Solución: realizar un scaffolding con Grails

¿Qué es Scaffolding?

El Scaffolding es un término introducido por Rails y que está presente en otros frameworks como Grails, permite la generación automática de código para las cuatro operaciones básicas de cualquier aplicación que son la creación, lectura, edición y borrado, en inglés se conoce como CRUD. La idea es que partiendo del esquema de base de datos, generar el código necesario para implementar el CRUD. En Grails se consigue escribiendo muy pocas líneas de código.

Grails permite dos tipos de scaffolding, dinámicos y estáticos. En el scaffolding dinámico el código se genera en tiempo de ejecución, de modo que  cualquier cambio en las clases de dominio genera un nuevo scaffolding,  el estático, genera código estático tanto de vistas como de controladores de forma que después podemos modificarlo como queramos.

Para mi problema, con el scaffolding estático me salgo.

Crear el proyecto Grails

Para la creación del proyecto he utilizado el Netbeans, bien te descargas la versión del Netbeans que incluye Grails o bien lo instalas como un plugin desde el Netbeans. Al crear el proyecto veremos la siguiente estructura:

Las partes que nos interesan son:

  • Configuration: entre otras cosas contiene los ficheros de configuración de la base de datos (DataSource.groovy). Por defecto viene configurado hsqldb. Si queremos otra base de datos hay que cambiar la configuración.
  • Controllers: donde crearemos los controladores.
  • Domain Classes: donde crearemos las clases de dominio.

Implementación del Scaffolding

Primero he cambiado la configuración de la base de datos a Mysql:

dataSource {
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
    username = "root"
    password = ""
}
development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop','update'
            url = "jdbc:mysql://localhost:3306/clm_web"
        }
}

Creamos las clases de dominio que necesitemos, para ello, hacemos click derecho sobre Domain Classes -> Nuevo -> Grails Domain Class. Por defecto todas las propiedades en un objeto de dominio son obligatorias, y grails realiza una validación automática en el momento de guardar el objeto en base de datos. Para controlar la validación de las propiedades podemos definir restricciones mediante la palabra reservada constraints.

class Category {
    static mapping = {
        table 'categories'
    }
    static constraints = {
        id(blank:false,nullable:false)
        seo_url(blank:false,nullable:false)
        title(blank:false,nullable:false)
        description(blank:false,nullable:false)
    }
    Integer id
    String seo_url
    String title
    String description
}

Para cada uno de los dominios creamos un controlador para los que se desee tener un scaffold, hacemos click derecho sobre Controllers -> Nuevo -> Grails Controller.

Modificamos el controlador de la siguiente forma:

class CategoryController {
    static scaffold = true
}

Lanzamos las aplicación y en la página inicial podremos ver un enlace que nos lleva al CRUD del objeto de dominio que hemos creado. Si queremos cambiar el orden en que muestra los campos, es tan simple como cambiar el orden en el código del objeto y reiniciar.

Las vistas que ofrece son las siguientes:

  • Listado

  • Añadir un elemento nuevo

  • Modificar o borrar elementos ya creados

]]>
http://anabuigues.com/2011/09/12/implementacion-de-un-scaffolding-con-grails/feed/ 16