o.errors.allErrors.each {println o} por padrão quando não para salvar um objeto de domínio

StackOverflow https://stackoverflow.com/questions/611282

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?

Foi útil?

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top