Я пытаюсь использовать общий метод beforeUpdate
, написав в BootStrap.groovy
.
def init = { servletContext ->
for (domainClass in grailsApplication.domainClasses) {
if(domainClass.clazz.simpleName == domainName){
domainClass.metaClass.beforeUpdate = {
println "i am here "
def dirtyPropertyNames = this.getDirtyPropertyNames()
println(dirtyPropertyNames)
if(dirtyPropertyNames != null && dirtyPropertyNames.size() > 0) {
for (dirtyPropertyName in dirtyPropertyNames) {
def oldValue = (this.getPersistentValue((dirtyPropertyName)))
def newValue = (this."${dirtyPropertyName}")
}
}
}
}
}
}
Но я не могу использовать this.getdirtyPropertyNames()
, поскольку он выдает ошибку.
groovy .lang.MissingMethodException: Нет подписи метода:
Если он находится в самом домене, this.getDirtyPropertyNames()
работает нормально. Я тоже пытался использовать domainClass.getDirtyPropertyNames()
, но все равно выдает ошибку.
Я использую Grails 4.