【问题标题】:specify a default value to a child class in grails为 grails 中的子类指定默认值
【发布时间】:2013-06-06 14:51:43
【问题描述】:

我想知道在父类中定义变量时是否可以为子类中的变量分配默认值。

举个例子,我就拿露营地的环境来说吧(想不到更好的了)

我们有一个寄宿班级(家长)。住宿可以是帐篷、移动房屋、小木屋等。只有帐篷场地没有露台(默认情况下)。另一个可能有也可能没有,也有一些帐篷场地没有的特殊规格(盘子、盖子......等)。

现在...我很懒,更喜欢将变量patio(布尔值)放在住宿类中,然后在帐篷类中声明patio默认为false。 或者我应该在每个子类中创建一个庭院变量?

class Lodging{
    String description
    int capacity
    Boolean patio
}

class Tent extends Lodging{
    static mapping = {
        patio defaultValue: false
    }
}

当我创建一个新的 Tent 实例时,会遵循映射规则吗?或者它会给我一个它无法识别变量的错误?

我没有尝试过任何东西,但它闪过我的脑海,并没有设法从 grails 文档(或这里)得到答案。 希望我的解释和问题是可以理解的:)

【问题讨论】:

  • 所以你还没试过这个看看它是否有效?
  • 写一个测试看看它是否有效。让我们知道:)
  • 最无帮助的 cmets 奖颁给了...

标签: grails inheritance grails-orm default-value


【解决方案1】:

您可以在子类中使用初始化块,例如:

class Lodging{
    String description
    int capacity
    Boolean patio
}

class Tent extends Lodging{
    static mapping = {
        patio defaultValue: false
    };
    {
        patio = false
    }

}

请注意在初始化块之前必须有分号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2011-01-21
    • 2012-09-02
    • 2015-05-22
    • 2012-04-13
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多