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

标签 grails groovy grails-orm setter interceptor

有什么方法可以使域类 setter 具有命令式操作。这是我希望的工作,是否有可能以其他方式?

域类:

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

}

我只能绑定(bind) 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

这是可能的行为吗?

最佳答案

您可以通过定义 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  

关于Grails:如何在 GORM 中设置域类属性时执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859404/

相关文章:

grails - Grails域类关系多对一

android - 如何使用产品 flavor 和 APK 拆分从 Gradle 重命名和生成所有 APK 和 Bundle

java - Hibernate:根据实体类自动创建/更新数据库表

recursion - 在 Groovy 中递归列出与特定文件类型匹配的所有文件

Grails 事务和 session

hibernate - 不想要 ID 列

grails - 更新父项和子项抛出越界异常

grails - 将资源插件模块转换为 Assets 管道

Grails 3 - 从 HQL 查询的查询结果中返回列表

list - 如何在gsp页面$ {list.find {it.code == $ otherlist.code} .Desc}中显示此内容