我正在遵循Graeme Keith Rocher撰写的“Grails权威指南”中的代码示例,并且遇到了一个非常不寻常的绊脚石。
本质上,存在两个域类-书签和标记。
书签:
class Bookmark {
static hasMany = [tags:Tag]
URL url
String title
String notes
Date dateCreated = new Date()
}
标签:
class Tag{
static belongsTo= Bookmark
Bookmark bookmark
String name
}
我被指示启动Grails控制台(与groovy控制台相同)并创建一个新对象,如下所示。
def b = new Bookmark(url: new URL('http://grails.org/'), title:'Grails', notes:'Groovy')
结果是:
Result: Bookmark : null
根据这本书,GORM自动提供addTag方法的实现。所以我编码
b.addTag( new Tag(name: 'grails'))
只是对错误消息感到困惑:
Exception thrown: No such property: b for class: ConsoleScript1
groovy.lang.MissingPropertyException: No such property: b for class: ConsoleScript1 at ConsoleScript1.run(ConsoleScript1:2)
作者没有在书中解释这一点。我想知道是否有人可以帮助我?
谢谢。
最佳答案
您正在阅读本书的第一版吗?如果是这样,那已经很过时了。从0.5开始不推荐使用add *方法。它已被addTo *替换,因此请执行以下操作:
b.addToTags( new Tag(name: 'grails'))
假设您的代码示例不应定义两次书签(复制和粘贴错误?),并且标签可能如下所示:
class Tag {
String name
}
关于grails - 初学Groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810555/