o.errors.allErrors.each {println es} standardmäßig, wenn andernfalls eine Domain-Objekt speichern

StackOverflow https://stackoverflow.com/questions/611282

Frage

Wenn Domänenobjekte persistierenden mit Grails / GORM ich mich oft fragen, warum ein () speichern Aufruf fehlschlägt.

Dies kann leicht durch Hinzufügen der Logik gelöst werden:

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

Dies ist jedoch das Hinzufügen überall kann ich ein .save () fügt eine Menge von doppeltem Code. Im Geiste der DRY würde Ich mag Grails / GORM konfigurieren, um automatisch alle an der Konsole (stderr) save-Fehler zu drucken. Ist das möglich? Wenn nicht, wie erweitere ich GORM es möglich zu machen?

War es hilfreich?

Lösung

Lösung:

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

Das fügt eine Methode namens s (), die rufen Sie sparen () und alle Fehler drucken.

Andere Tipps

Dies ist nicht das sauberste suchen, und es ist wahrscheinlich eine besser groovier Weg, dies zu tun. Basierend auf der Suche hier ich diesen Code zusammen, die etwas sein könnte, Sie erweitern und die Nutzung könnten:

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

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

def b = new Book()

b.customPrintTitle()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top