o.errors.allErrors.each {println ذلك} بشكل افتراضي عند فشلها في حفظ كائن المجال
-
03-07-2019 - |
سؤال
عند استمرار كائنات المجال باستخدام الكؤوس المقدسة / GORM كثيرا ما أجد نفسي أتساءل لماذا حفظ () فشلت المكالمة.
ويمكن بسهولة أن تحل عن طريق إضافة منطق:
if (!o.save()) {
o.errors.allErrors.each { println it }
}
ولكن، مضيفا ان هذا في كل مكان أفعل. حفظ () يضيف الكثير من التعليمات البرمجية مكرر. في روح DRY أود أن تكوين الكؤوس المقدسة / GORM لطباعة أي حفظ-الأخطاء تلقائيا إلى وحدة التحكم (ستدير). هل هذا ممكن؟ إذا لم يكن كذلك، كيف يمكنني تمديد GORM لجعله ممكنا؟
المحلول
والحل:
Object.metaClass.s = {
def o = delegate.save()
if (!o) {
delegate.errors.allErrors.each {
println it
}
}
o
}
وهذا يضيف طريقة تسمى ق () التي سيدعو حفظ () وطباعة أي أخطاء.
نصائح أخرى
وهذه ليست أنظف المظهر، وربما كان هناك <م> أفضل م>، <م> groovier الطريق م> للقيام بذلك. وبناء على النظر هنا لقد وضعت هذه التعليمات البرمجية التي قد يكون شيئا يمكن توسيع والاستخدام:
class Book {
void printTitle(){ println "The Title" }
}
Book.metaClass.customPrintTitle << {->
println "changin ur class"
printTitle()
}
def b = new Book()
b.customPrintTitle()
لا تنتمي إلى StackOverflow