Grails的脚手架 - 定义域类的这个属性可能值(Grails Scaffolding - def

2019-09-19 05:12发布

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

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

并想知道如果我能为一个属性定义可能的值 - 比如性别作为{M,F,U}使这三个值将在组合框中使用动态脚手架人控制时上市。

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

Answer 1:

从文档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+肯定这一点。



Answer 2:

下面是一个替代的解决方案

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),性别和默认的性别,以美国的利益在这里是可以重命名什么F,M和U的意思是不需要处理数据迁移。



文章来源: Grails Scaffolding - define possible values for this property of a domain class