2012-07-08 12 views
6

Soy nuevo en Grails. Tengo una clase de dominio Persona como:Grails Andamios: defina los valores posibles para esta propiedad de una clase de dominio

class Person { 
    String firstName 
    String lastName 
    String gender 
    Date dateOfBirth 
} 

Y pregunto si puedo definir valores posibles para una propiedad - dicen género como {H, F, T} para que estos tres valores se enumeran en la lista desplegable cuando se usa andamio dinámico para controlador de persona.

Aquí solo quería saber si hay tal característica en el marco de Grails? Si tal característica existe, ¿cómo puedo usarla?

Respuesta

5

De la documentación http://grails.org/doc/latest/guide/scaffolding.html, usted debería ser capaz de utilizar una restricción INLIST:

class Person { 
    String firstName 
    String lastName 
    String gender 
    Date dateOfBirth 

    def constraints = { 
     gender(inList: ["M", "F", "U"]) 
    } 
} 

Esto debería andamio para una lista de selección para el campo de género, dependiendo de la versión de Grails que estés utilizando. 2.0+ definitivamente hace esto.

3

Aquí es una solución alternativa

class Person { 
    String firstName 
    String lastName 
    enum Gender { 
     M(1), 
     F(2), 
     U(3) 
     private Gender(int val) { this.id = val } 
     final int id 
    } 
    Gender gender = Gender.U 
    Date dateOfBirth 

    def constraints = { 
     gender() 
    } 
} 

Esto almacenará género en la base de datos como un entero (1,2,3) y el defecto de género a U. La ventaja aquí es que usted puede cambiar el nombre de lo que M, M y U significan sin manejar una migración de datos.

+0

buena alternativa, gracias. – gtiwari333

+0

buena lógica para la lista predeterminada ... – sanghavi7

Cuestiones relacionadas