Обычно для домена Grails или класса команд вы объявляете свои ограничения, и платформа добавляет метод validate()
, который проверяет, является ли каждое из этих ограничений действительным для текущего экземпляра, например,
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
не является методом родительского класса (он добавляется метапрограммированием). Есть ли другой способ достичь моей цели?