我正在尝试解决我的应用程序中未调用我的一个域类中的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并从beforeUpdateLocation中手动调用beforeUpdate。尽管如此,这感觉很hacky,闻起来很不好。

09-30 14:37