使用domainClass.properties = params将所有传入的请求参数绑定到域类对象是很常见的。我不明白为什么这个赋值会自动更新域对象。 e.g。
def update = {
def book = Book.get(1)
book.properties = params
book.discard()
}
params赋值更新域对象。丢弃方法没有效果。有谁可以帮助我?
答案 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/ 请参阅“我现在不想要您保存”部分'现在您要保存?!'特别是。