我摆脱了最初的更新gsp Grails提供。Grails:UPDATE函数是如何工作的?
我把它放在我的list.gsp表的第一行,并更改表克所有的值:文本字段,以便他们可以不用去的save.gsp
但现在我可以编辑试图使它工作,而我不能。
我在每一行的最后一列添加了一个更新按钮。
当我改变了G的值:文本框,然后点击更新按钮它告诉我
Density #ID updated
但值不会更改。
我想我在控制器中的def update中做了一些错误。
下面是代码:
def update = {
log.info "Entering Action ${actionUri}"
def densityInstance = Density.get(params.id)
if (densityInstance) {
if(params?.Rcommodity) {
println "${params.Rcommodity}"
}
if (params.version) {
def version = params.version.toLong()
if (densityInstance.version > version) {
densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing")
render(view: "list", model: [densityInstance: densityInstance])
return
}
}
densityInstance.properties = params
if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) {
flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}"
redirect(action: "list", id: densityInstance.id)
}
else {
redirect(action: "list", id: densityInstance.id)
}
}
else {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "list")
}
}
的Rcommodity创建文本框的名字,我把一个println来看看它的值是正确的,现在我不知道该怎么做的价值文本字段是输入的文本字段,它给了我与之前相同的值,但是它给了我一条消息说它已被更新。 该控制器是密度控制器和域密度
任何帮助将不胜感激。感谢:D
商品是Density的财产,我应该添加Rcommodity以及? – randomizertech 2010-10-15 14:10:15
对此延迟感到抱歉 - 请查看“数据绑定”文档(http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.6数据绑定)。您的参数(从gsp表单输入名称中设置)需要与densityInstances属性相匹配 - 我无法分辨您称为它们的内容,而是从上面粘贴的其中一行中猜出。 – 2010-10-18 21:23:08
好吧,假设我在第一行有一个字段,我在其中创建了所有这些字段,名称为“commodity”,因此在域中声明。那么创建的是'Rcommodity'我应该将它添加到域以及更新它?这就是你想说的吗? – randomizertech 2010-10-20 16:13:19