Grails - как выполнять код перед каждым сохранением?
Есть ли хороший / стандартный способ выполнения общего кода перед каждым save()
вызов на доменные классы?
Например, мой домен
class Page {
String url
Boolean processed
Date date
Integer urlCrc
}
Моя форма имеет только 3 первых поля, и я хотел бы рассчитать urlCrc
каждый раз save()
метод называется. Я не могу просто переопределить метод сохранения, потому что он введен.
3 ответа
Решение
Вы можете использовать события GORM - см. Документы. Так как по умолчанию validate()
называется перед каждым save()
Я бы использовал это.
class Page {
//your defs here
def beforeValidate() {
this.urlCrc = yourComputationHere
}
}
class Page {
def beforeInsert() {
this.beforeUpdate()
}
def beforeUpdate() {
this.urlCrc = 'calculate something'
}
}
Эта тема описана в документации GORM:
6.5 Расширенные возможности GORM