在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保留字的列表?
答案 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会怎么样?