6

私はGrailsが初めてです。私は Person ドメインクラスを次のように持っています:

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

そして、プロパティの可能な値を定義できるかどうか疑問に思っています.Personコントローラーの動的スキャフォールディングを使用するときに、これら3つの値がコンボボックスにリストされるように、性別を{M、F、U}とします。

ここで、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 に答える