通常,對於Grails域或命令類,您聲明瞭約束,並且框架添加了一個validate()
方法,用於檢查每個約束是否對當前實例有效,例如,自定義Grails驗證
class Adult {
String name
Integer age
void preValidate() {
// Implementation omitted
}
static constraints = {
name(blank: false)
age(min: 18)
}
}
def p = new Person(name: 'bob', age: 21)
p.validate()
在我的情況下,我想確保preValidate
始終在類驗證之前執行。我可以通過添加一個方法
def customValidate() {
preValidate()
validate()
}
但後來大家誰使用這個類需要記住實現這個調用customValidate
而不是validate
。我不能做到這一點無論
def validate() {
preValidate()
super.validate()
}
因爲validate
不是父類的方法(它是由元編程添加)。有另一種方法來實現我的目標嗎?