o.errors.allErrors.each {println it} par défaut en cas d'échec de l'enregistrement d'un objet de domaine
-
03-07-2019 - |
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?
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()