grails - 初学Groovy

标签 grails groovy groovy-console

我正在遵循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/

相关文章:

java - `groovyConsole` 无法使用 Java 8 在 Ubuntu 18.04 上启动,如何解决?

grails - 2 Spring Security中的UserDomainClass

ajax - 从各种来源返回相同的JSON记录列表

mysql - 按距引用点的距离查找所有内容

groovy - 斜线有什么好处?

eclipse - Eclipse中的Groovy Gradle“项目缺少必需的库”错误

sql - 来自 grails 项目的 hibernate AssertionFailure

groovy - 在运行时获取 groovy 源文件的路径

grails - "grails console"和 "grails"之间的差异,然后是 "console"

grails - Grails的理解属于TotalTo协会