Grails: Propiedades dinámicas en controladores

Una de las principales ventajas de Groovy es el uso implícito de getters/setters para el acceso y escritura de variables; y la generación durante la compilación, de getters/setters para todos los atributos de nuestras clases.

Con un par de ejemplos se ve más claro: si tenemos una clase con dos atributos:

class Persona {
    String nombre
    int edad
}

El compilador de Groovy va a generar automáticamente los setters y los getters correspondientes, quedando la clase como si hubiera sido codificada así en Java:

public class Persona {
    private String nombre;
    private int edad;
    public String getNombre() { return nombre; }
    public setNombre(String nombre) { this.nombre = nombre; }
    public int getEdad() { return edad; }
    public setEdad(int edad) { this.edad = edad; }
}

Por otro lado, cuando accedemos a una variable desde Groovy, estamos usando implícitamente los getters y setters, de manera que el siguiente código Groovy:

def valor = miedad
persona.nombre = valor

Sería el equivalente a esto:

def valor = getMiedad()
getPersona().setNombre(valor)

Es decir, cualquier acceso a una variable que no exista en el contexto actual, o cualquier acceso a un atributo de un objeto, se transforma en un get/set (para saltarse esto, es necesario utilizar el operador “Java field” de la siguiente manera: persona.@nombre = valor)

Estos dos características nos permiten añadir, por ejemplo, nuevas variables en nuestros controladores cuyos valores se carguen de base de datos o de la sesión (o de los dos sitios). Por ejemplo, supongamos que tenemos un controlador que requiere en cada petición la lectura de base de datos del usuario y de una factura:

class EjemploController {
  def index = {
    def usuario = Usuario.get(session.miusuario) // Se supone que durante el login, se carga el valor miusuario en la sesion
    usuario.accesos = usuario.accesos + 1
    usuario.save()
    def factura = Factura.findByUsuarioAndFecha(usuario, new Date())
    sendEmailAviso(factura.importe, usuario.email)
    ...
  }
}
Photo of Alberto Vilches

Alberto Vilches es arquitecto de software y consultor pero, sobre todo, es programador. Lleva más de 12 años trabajando en el desarrollo de software y 10 con Java. Ha trabajado en banca electrónica para el BBVA y desarrollando con J2EE en IT Deusto. También ha desempeñado otros roles diferentes a la programación como instructor y consultor Weblogic para BEA Systems y analista de sistemas en Aena. Actualmente se encuentra en Paradigma Tecnológico. Cree en los lenguajes para la máquina virtual Java como medio para mejorar la productividad y la creatividad en la programación. Apuesta firmemente por el ecosistema Groovy y Grails como herramientas de desarrollo ágiles, impartiendo formación y seminarios, y asistiendo a conferencias especializadas.

Ver toda la actividad de Alberto Vilches

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Escribe un comentario