在 Grails 中记录带有错误的命令对象的最有效方法是什么?
我目前的记录只是,
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
但它只是吐出一团难以理解的输出。
有人对改进命令对象的日志记录有任何建议吗?
在 Grails 中记录带有错误的命令对象的最有效方法是什么?
我目前的记录只是,
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
但它只是吐出一团难以理解的输出。
有人对改进命令对象的日志记录有任何建议吗?
messageSource
为bean添加依赖注入:
def messageSource
然后您可以构建一个以字段名称为键的映射,其中包含该字段的验证错误:
def locale = Locale.default
def stringsByField = [:].withDefault { [] }
for (fieldErrors in cmd.errors) {
for (error in fieldErrors.allErrors) {
stringsByField[error.field] << messageSource.getMessage(error, locale)
}
}
您可以println stringsByField
通过按键运行或查找个别问题。
在这里,我使用默认区域设置,但如果您使用本地化,请使用当前的本地化请求。
cmd.errors.allErrors.each {
log.debug it
}
编辑(更详细)
cmd.errors.allErrors.each {err ->
log.debug("[$err.field]: $err")
}