0

私は、Graeme Keith Rocher による「The Definitive Guide to Grails」のコード例に従っていますが、かなり珍しい障害に遭遇しました。

基本的に、ブックマークとタグの 2 つのドメイン クラスが存在します。

ブックマーク:

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)

著者はこの本でこれを説明していません。誰かが私を助けることができるかどうか疑問に思っていましたか?

ありがとう。

4

2 に答える 2

3

本の第1版を読んでいますか?もしそうなら、それはかなり時代遅れです。add* メソッドは 0.5 から廃止されました。addTo* に置き換えられたので、代わりに次のようにします。

b.addToTags( new Tag(name: 'grails'))

コード例でブックマークを 2 回定義してはいけないと仮定すると (コピー アンド ペースト エラー?)、タグは次のようになります。

class Tag {
    String name
}
于 2009-11-28T04:43:20.903 に答える
2

groovy コンソールは grails コンソールと同じではありません。grails コンソールにアクセスするにgrails consoleは、アプリケーション ディレクトリを入力します。Java GUI アプリを取得する必要があります。grails は標準の Groovy に何かを追加するため、この例が機能する可能性があります。

また、問題は addTag メソッドではなく、b定義したアイテムが見つからないことです。1 行ずつ実行するのではなく、スクリプト全体を一度にコンソールに入力して実行してみてください。

于 2009-11-27T21:02:56.283 に答える