我正在尝试解决我的应用程序中未调用我的一个域类中的beforeUpdate
方法的问题。
如果没有直接属于域类的字段被更新,则不会触发beforeUpdate
事件。我想这很有道理,但是即使在仅更新我的域类的关联的情况下,我也希望beforeUpdate
方法中的代码能够执行。
例如,我的域类看起来像这样:
class Organisation {
String name
Location location
def beforeUpdate() {
//do some stuff with the location when it's updated
}
}
如果从表单提交的参数映射包含
name
参数,则将触发beforeUpdate
。如果参数映射仅包含location
参数,则不是。即使我仅更新关联,有什么方法可以使Grails触发
beforeUpdate
? 最佳答案
您问题的简短答案是:
除非域类上的属性值之一已更改,否则beforeUpdate
将不会触发。
在您的情况下,由于没有更改beforeUpdate
的属性,因此未调用Organisation
。
在这种情况下,我唯一想做的就是更改您的域模型以使Location
知道它拥有Organisation
并从beforeUpdate
的Location
中手动调用beforeUpdate
。尽管如此,这感觉很hacky,闻起来很不好。