查看下面的Grails域类,如果对象是第一次保存的(如果没有id),它将在setter中修改一个值:
class Idtest {
String name
void setName(String name) {
if(!this.id)
this.name = name + "TEST"
else
this.name = name
}
}
如果我使用
generate-all
生成 View 和 Controller ,请启动应用程序,然后在生成的表单中输入“hello”,将保存“helloTESTTEST”。save
函数如下所示:def save = {
def idtestInstance = new Idtest(params)
if (idtestInstance.save(flush: true)) {
flash.message = "${message(code: 'default.created.message', args: [message(code: 'idtest.label', default: 'Idtest'), idtestInstance.id])}"
redirect(action: "show", id: idtestInstance.id)
}
else {
render(view: "create", model: [idtestInstance: idtestInstance])
}
}
为什么二传手叫两次?
最佳答案
而不是做
if(!this.id){}
您应该使用beforeInsert()
GORM Advanced Features
关于grails - 为什么在保存时两次调用Grails中的二传手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096817/