도메인 객체를 저장하지 못할 때 기본적으로 o.errors.allerrors.each {println it}
-
03-07-2019 - |
문제
Grails/Gorm을 사용하여 도메인 객체를 지속시킬 때 Save () 호출이 왜 실패하는지 궁금해합니다.
이것은 논리를 추가하여 쉽게 해결할 수 있습니다.
if (!o.save()) {
o.errors.allErrors.each { println it }
}
그러나 어디에서나 추가하면 .save ()를 수행하면 많은 중복 코드가 추가됩니다. 건식의 정신으로 Grails/Gorm을 구성하여 STDERR (Save-Orrors)에 자동으로 인쇄하고 싶습니다. 그게 가능합니까? 그렇지 않다면, Gorm을 어떻게 확장하여 가능하게합니까?
해결책
해결책:
Object.metaClass.s = {
def o = delegate.save()
if (!o) {
delegate.errors.allErrors.each {
println it
}
}
o
}
여기에는 save ()을 호출하고 오류를 인쇄하는 s ()라는 메소드가 추가됩니다.
다른 팁
이것은 가장 깨끗한 외모가 아니며 아마도 더 나은, 그루비어 이것을하는 방법. 보고에 따라 여기 확장하고 사용할 수있는이 코드를 구성했습니다.
class Book {
void printTitle(){ println "The Title" }
}
Book.metaClass.customPrintTitle << {->
println "changin ur class"
printTitle()
}
def b = new Book()
b.customPrintTitle()
제휴하지 않습니다 StackOverflow