当前位置:  开发笔记 > 编程语言 > 正文

o.errors.allErrors.each {println it}默认情况下无法保存域对象

如何解决《o.errors.allErrors.each{printlnit}默认情况下无法保存域对象》经验,为你挑选了1个好方法。

使用Grails/GORM持久保存域对象时,我经常发现自己想知道为什么save()调用失败.

这可以通过添加逻辑轻松解决:

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

但是,在我所做的任何地方添加.save()会添加大量重复的代码.本着DRY的精神,我想配置Grails/GORM来自动将任何保存错误打印到控制台(stderr).那可能吗?如果没有,我如何扩展GORM以使其成为可能?



1> knorv..:

解:

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

这会添加一个名为s()的方法,它将调用save()并打印任何错误.


这会将s()添加到所有对象,而不仅仅是域对象.要仅将其添加到域对象,我认为你需要在插件的doWithDynamicMethods闭包中进行元编程
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有