【问题标题】:Grails Scaffolding - define possible values for this property of a domain classGrails Scaffolding - 为域类的这个属性定义可能的值
【发布时间】:2012-07-08 04:46:19
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: grails grails-domain-class grails-constraints


    【解决方案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+ 肯定会这样做。

    【讨论】:

      【解决方案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) 存储在数据库中,并将性别默认为 U。这样做的好处是您可以重命名 F、M 和 U 的含义,而无需处理数据迁移。

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 1970-01-01
        • 2017-01-17
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多