6

我是 Grails 的新手。我有一个 Person 域类:

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

并且想知道我是否可以为属性定义可能的值 - 说性别为 {M, F, U} 以便在为 Person 控制器使用动态脚手架时这三个值将列在组合框中。

这里我只是想知道Grails框架中是否有这样的功能?如果存在这样的功能,那么我该如何使用它?

4

2 回答 2

5

从文档http://grails.org/doc/latest/guide/scaffolding.html,您应该能够使用 inList 约束:

class Person {
    String firstName
    String lastName
    String gender
    Date dateOfBirth

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

根据您使用的 Grails 版本,这应该为性别字段提供一个选择列表。2.0+ 绝对可以做到这一点。

于 2012-07-08T05:40:30.973 回答
3

这是一个替代解决方案

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()
    }
}

这会将性别作为整数 (1,2,3) 存储在数据库中,并将性别默认为 U。这里的好处是您可以重命名 F、M 和 U 的含义,而无需处理数据迁移。

于 2012-07-09T01:37:38.197 回答