Grails: как выполнить действие, если в GORM установлено свойство класса домена - PullRequest
1 голос
/ 14 января 2012

Есть ли какой-нибудь способ заставить установщика класса домена выполнить обязательные действия. Это то, что я хотел бы работать, возможно ли это как-то иначе?

Класс домена:

Class ExampleDomain {
  BigDecimal someNumber
  def setSomeNumber = {setVal ->
    println "Today is a good day to be the number: ${setVal}"
  }

}

Могу ли я связывать события только на onUpdate и подобных вещах или есть способ внести изменения в события дисковода объекта Java?

Например:

def thisThing = new ExampleDomain(someNumber:3.0) //prints "Today is a good day to be the number: 3.0"
thisThing.someNumber = 5.8  //prints "Today is a good day to be the number: 5.8"
thisThing.save()  //prints nothing

Это возможное поведение?

1 Ответ

3 голосов
/ 14 января 2012

Вы можете сделать это, определив методы получения / установки вместо замыканий:

Class ExampleDomain {
  BigDecimal someNumber

  void setSomeNumber(someNumber) {
    println "Today is a good day to be the number: ${someNumber}"
    this.someNumber = someNumber
  }

  BigDecimal getSomeNumber() {
    someNumber
  }
}

работает для

//prints "Today is a good day to be the number: 5.8"
new ExampleDomain().someNumber = 5.8  
...