Grails:在GORM中设置Domain Class属性时如何执行操作

时间:2012-01-14 01:32:41

标签: grails groovy gorm setter interceptor

有没有办法让域类设置器有必要的操作。这是我希望的工作,是否可能采用其他方式?

域类:

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 个答案:

答案 0 :(得分:3)

您可以通过定义getter / setter方法而不是闭包来完成此操作:

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