在Grails中,“财产”是一个保留字吗?

时间:2009-09-30 05:22:19

标签: grails

在Grails中,“财产”是一个保留字吗?也就是说,我可以命名域类Property并让其所有者通过properties引用它吗?例如:

class Thing {
    static hasMany = [properties: Property]
}

class Property {
    static belongsTo = [thing: Thing]
}

当我尝试将Property添加到Thing时,我收到了错误消息:

Exception thrown: No signature of method: org.codehaus.groovy.grails.web.binding.DataBindingLazyMetaPropertyMap.add() is applicable for argument types: (Property) values: [Property : null]

groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.grails.web.binding.DataBindingLazyMetaPropertyMap.add() is applicable for argument types: (Property) values: [Property : null]

    at ConsoleScript10.run(ConsoleScript10:3)

是否有所有Grails保留字的列表?

3 个答案:

答案 0 :(得分:3)

我不确定Property是否已保留,但properties专门针对域类进行处理,因为它用于data binding。当你改变时会发生什么:

static hasMany = [properties: Property]

类似

static hasMany = [myProperties: Property]

答案 1 :(得分:0)

Grails是一个Web框架。一般来说,只有语言真的有保留字。 Groovy的保留字都是Java保留的,还有其他一些。完整列表显示为here

你会注意到它确实包含了“属性”,这对我来说是一个很大的惊喜,因为我不知道它的用途是什么,我认为/我认为我很了解Groovy。也许它留作将来使用?

答案 2 :(得分:-1)

虽然我不能find any file with the name Property in grails,但明智的做法是不要使用这样一个常用词 - 谁知道它将来何时会被保留?

如果你只是在你的类名前加上一些东西,比如BlahProperty会怎么样?