grails - 数据绑定后的奇怪行为

时间:2010-09-22 13:21:20

标签: grails

使用domainClass.properties = params将所有传入的请求参数绑定到域类对象是很常见的。我不明白为什么这个赋值会自动更新域对象。 e.g。

def update = {
  def book = Book.get(1)
  book.properties = params
  book.discard()
}

params赋值更新域对象。丢弃方法没有效果。有谁可以帮助我?

2 个答案:

答案 0 :(得分:2)

discard()方法不会重置图书实例,只能防止它由Grails自动保存。要重置图书实例,您需要重新加载它,例如使用Book.get(1)。

book.properties = params将简单地尝试将params映射中的元素分配给Book的属性,其中属性名称与映射条目键相同。我相信这是标准的Groovy功能,而不是Grails特定的。

答案 1 :(得分:0)

我不知道为什么Ruben的答案选择正确。 @ hitt5行为符合预期,但是它有所不同,你会在这里找到原因: http://blog.springsource.org/2010/06/23/gorm-gotchas-part-1/ 请参阅“我现在不想要您保存”部分'现在您要保存?!'特别是。