Tôi đang viết một plugin grails và tôi cần phải móc vào phương thức save() miền để thực hiện một số logic sau khi lưu. Tôi cần phải làm điều này trên nhiều lớp miền. Tôi đang cố gắng tránh các sự kiện ngủ đông trong trường hợp người dùng plugin không sử dụng chế độ ngủ đông với GORM.Hooking vào đối tượng Grails Domain save()
Tôi đã thử nhiều thứ nhưng dưới đây là những gì tôi nghĩ nên có cơ hội tốt nhất khi làm việc. Trong mọi trường hợp grailsSave là null. Tôi có thể làm cái này như thế nào?
def doWithDynamicMethods = { ctx ->
application.domainClasses.each { dc ->
def grailsSave = dc.metaClass.pickMethod('save', [Map] as Class[])
domainClass.metaClass.save = { Map params ->
grailsSave.invoke(delegate, [params] as Object[])
println "Saved object, now do my thing"
//...
}
}
}
Tôi đã sau đây đặt trong * Lớp Plugin.groovy tôi:
def dependsOn = [domainClass: '1.1 > *', hibernate: '1.1 > *']
def loadAfter = ['hibernate']
Shawn và kiểm tra Logging plugin đá của mình. –
Cảm ơn bạn đã chia sẻ! Tôi đã lười biếng để tìm cái này của tôi. – Kimble