gpt4 book ai didi

grails - 为什么在基类中未调用beforeValidate

转载 作者:行者123 更新时间:2023-12-02 14:11:40 25 4
gpt4 key购买 nike

这只花了我将近半天的时间(主要是因为Grails / Gorm并不十分清楚发生的错误)

我必须将一个从另一个继承的类划分为域

class Base {
String a

static constraints = {
a blank: false, nullable: false, unique: true
}
}

class Extended extends Base {
String b

static constraints = {
b blank: false, nullable: false, unique: true
}
}

现在,我还有一个 beforeValidate方法,它对 a中定义的 Base属性起作用。
def beforeValidate() {
if (a == null) { a = "somevalue" }
}

如果我创建 Extended的实例并将其保存
def instance = new Extended()
instance.save()

如果在 beforeValidate中定义了 class Extended,那么一切都会正常进行。

但是,如果我将 beforeValidate放入 class Base,它将失败(无提示)。

为什么?

PS:使用grails 2.4.0

最佳答案

如果基类不在grails-app/domain中,则不会调用事件处理程序。例如,如果项目的结构是这样的,则事件处理程序将被忽略:

src
groovy
mypackage
Base.groovy
grails-app
domain
mypackage
Extended.groovy

关于grails - 为什么在基类中未调用beforeValidate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23891238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com