5

Grails/GORM を使用してドメイン オブジェクトを永続化するとき、なぜ save() 呼び出しが失敗するのか疑問に思うことがよくあります。

これは、ロジックを追加することで簡単に解決できます。

if (!o.save()) {
    o.errors.allErrors.each { println it }
}

ただし、これを .save() を実行するすべての場所に追加すると、多くの重複コードが追加されます。DRY の精神で、Grails/GORM を構成して、保存エラーをコンソール (stderr) に自動的に出力したいと考えています。それは可能ですか?そうでない場合、それを可能にするためにGORMを拡張するにはどうすればよいですか?

4

2 に答える 2

9

解決:

Object.metaClass.s = {
    def o = delegate.save()
    if (!o) {
        delegate.errors.allErrors.each {
            println it
        }
    }
    o
}

これにより、save()を呼び出してエラーを出力するs()というメソッドが追加されます。

于 2009-03-04T23:52:27.017 に答える
0

これは見栄えがよくありません。おそらく、これを行うためのより良い、より洗練された方法があります。ここを見ることに基づいて、拡張して使用できる可能性のあるこのコードをまとめました。

class Book {
   void printTitle(){ println "The Title" }
}

Book.metaClass.customPrintTitle << {-> 
    println "changin ur class"
    printTitle()
}

def b = new Book()

b.customPrintTitle()
于 2009-03-04T19:37:17.350 に答える