o.errors.allErrors.each {println o} por padrão quando não para salvar um objeto de domínio
-
03-07-2019 - |
Pergunta
Quando persistindo domínio objetos usando Grails / GORM encontro-me frequentemente se perguntando por que uma chamada save () falhar.
Isso pode facilmente ser resolvido adicionando a lógica:
if (!o.save()) {
o.errors.allErrors.each { println it }
}
No entanto, adicionando este em todos os lugares eu faço um .Save () adiciona um monte de código duplicado. No espírito de DRY eu gostaria de configure Grails / GORM para imprimir automaticamente quaisquer erros Save-to o console (stderr). Isso é possível? Se não, como faço para estender GORM para torná-lo possível?
Solução
Solução:
Object.metaClass.s = {
def o = delegate.save()
if (!o) {
delegate.errors.allErrors.each {
println it
}
}
o
}
Isso adiciona um método chamado s () que irá chamar save () e imprimir quaisquer erros.
Outras dicas
Esta não mais limpas é bonito, e provavelmente há um melhor , groovier maneira de fazer isso. Com base na procura aqui Eu coloquei este código que pode ser algo que você poderia expandir e uso:
class Book {
void printTitle(){ println "The Title" }
}
Book.metaClass.customPrintTitle << {->
println "changin ur class"
printTitle()
}
def b = new Book()
b.customPrintTitle()