Grails Scaffolding - define possible values for this property of a domain class

孤街醉人 提交于 2019-12-22 05:19:33

问题


I am new to Grails. I have a Person domain class as :

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

And wondering if I can define possible values for a property - say gender as {M, F, U} so that these three values will be listed in combo box when using dynamic scaffolding for Person controller.

Here I just wanted to know if there is such feature in Grails framework? If such feature exists , then how can I use it?


回答1:


From the documentation http://grails.org/doc/latest/guide/scaffolding.html, you should be able to use an inList constraint:

class Person {
    String firstName
    String lastName
    String gender
    Date dateOfBirth

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

This should scaffold to a select list for the gender field, depending on the version of Grails you're using. 2.0+ definitely does this.




回答2:


Here is an alternative solution

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

This will store gender in the database as an integer (1,2,3) and default the gender to U. The benefit here is you can rename what F, M, and U mean without handling a data migration.



来源:https://stackoverflow.com/questions/11380704/grails-scaffolding-define-possible-values-for-this-property-of-a-domain-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!