o.errors.allErrors.each {println it} par défaut en cas d'échec de l'enregistrement d'un objet de domaine

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

Question

Lors de la persistance d'objets de domaine avec Grails / GORM, je me demande souvent pourquoi un appel save () échoue.

Ceci peut être facilement résolu en ajoutant la logique:

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

Cependant, en ajoutant ceci partout où je fais, un .save () ajoute beaucoup de code en double. Dans l’esprit DRY, je voudrais configurer Grails / GORM pour imprimer automatiquement les erreurs de sauvegarde sur la console (stderr). Est-ce possible? Sinon, comment puis-je étendre GORM pour rendre cela possible?

Était-ce utile?

La solution

Solution:

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

Ceci ajoute une méthode appelée s () qui appelle save () et affiche les erreurs éventuelles.

Autres conseils

Ce n’est pas l’aspect le plus épuré, et il existe probablement un meilleur , plus groovier moyen de le faire. Sur la base de ici , j'ai rassemblé ce code que vous pourriez développer et utiliser:

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

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

def b = new Book()

b.customPrintTitle()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top