2014-09-03 73 views
0

我没有看到脏标志回​​来为真。
要这样设置使用Grails 2.4.3 内的控制器保存功能过去下面的代码创建一个空的项目:Grails 2.4.3,isDirty标志没有设置在新的域对象上

def data = [firstName:'X', lastName:'Y'] 
Person p = new Person() 
bindData(p, data) 
println p.toString() 
println p.dirtyPropertyNames 
println p.isDirty() 

域类:

class Person { 
    String firstName 
    String lastName 
    static constraints = { 
    } 

    String toString(){ 
     return lastName + ': ' + firstName 
    } 
} 

我的结果

p.toString() == Y: X 
p.dirtyPropertyNames == [] 
p.isDirty() == false 

其他人得到同样的问题?从dataBind创建新的域对象时,这似乎是个问题。因此,当我尝试保存域对象时,它不会保存,因为记录不脏。在2.2.2版中,这会被认为是脏的,文档说它很脏。

+2

你的意思是'bindData(p,data)'? – dmahapatro 2014-09-03 18:11:40

+0

是的,我改变了它 – user2498465 2014-09-03 19:50:14

回答

1

如果属性的值自从数据库加载后已更改(但尚未保留),则属性被视为“脏”。在你的例子中,Person实例从未被持久化过,所以没有一个属性可能是脏的