我是Grails的新手。我有一个Person域类:
class Person {
String firstName
String lastName
String gender
Date dateOfBirth
}
想知道我是否可以为属性定义可能的值 - 比如性别为{M,F,U},以便在为Person控制器使用动态脚手架时,这三个值将在组合框中列出。
在这里,我只是想知道Grails框架中是否有这样的功能?如果存在此类功能,那么我该如何使用它呢?
答案 0 :(得分: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+肯定会这样做。
答案 1 :(得分: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的含义。