Grails - 如何在每次保存之前执行代码?

时间:2012-06-03 20:24:17

标签: grails gorm grails-domain-class

在域类的每个save()调用之前,是否有一种好的/标准的方法来执行一些公共代码?

例如,我的域名

class Page {

    String url
    Boolean processed
    Date date
    Integer urlCrc 
}

我的表单只有3个第一个字段,我想在每次调用urlCrc方法时计算save()。我不能只是覆盖保存方法,因为它被注入。

3 个答案:

答案 0 :(得分:16)

您可以使用GORM活动 - 请参阅docs。由于默认validate()在每个save()之前调用,我会使用它。

class Page {
    //your defs here

    def beforeValidate() {
        this.urlCrc = yourComputationHere
    }
}

答案 1 :(得分:1)

class Page {
    def beforeInsert() {
        this.beforeUpdate()
    }
    def beforeUpdate() {
        this.urlCrc = 'calculate something'
    }
}

答案 2 :(得分:0)

GORM文档中介绍了此主题:

6.5高级GORM功能

6.5.1 Events and Auto Timestamping