Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Monocaffe

Grails Enum

Noviembre 20th, 2010 - [Enlace local]

¿Soporta Groovy enums?



Sí, como con cualquier objeto de Java, podemos acceder a ellos desde Groovy. Hacer que estos funcionen con Grails ya es un poco más complicado ya que tenemos que tener en cuenta el comportamiento de Hibernate al encontrarse un enum.



Después de un poco de trial & error, finalmente logre una solución que se ajusta a lo que quería.



public enum BookType{

EBOOK("eBook"),

PAPERBACK("PaperBack"),

HARD("Hard Cover"),

AUDIO("Audio Book")



String type



BookType(String type){

this.type = type

}



static list() {

[EBOOK, PAPERBACK, HARD, AUDIO]

}

}



Luego utilizamos este enum en nuestro modelo:



class Book{

String name

BookType type



static constraints = {

type(nullable:false)

}

}



Lo mejor de esto es el comportamiento de Hibernate, que crea la tabla book_type con la columna type y enlaza los valores del enum con nuestro modelo. A continuación, podemos utilizar los valores de nuestro enum al crear un libro:



<g:select name="bookType" id="bookType"

from="${BookType.list()}"

value="${fieldValue(bean: bookInstance, field: 'bookType')}"

optionValue="type"/>

» Leer más, comentarios, etc...

Información legal y técnica