Grails:UPDATE函数如何工作?

时间:2010-10-13 14:52:51

标签: list grails controller

我摆脱了最初的UPDATE gsp Grails优惠。

我将它放在list.gsp表的第一行,并将表的所有值更改为g:textfield,这样就可以编辑它们而无需转到save.gsp

但现在我正努力让它发挥作用,而我却做不到。

我在每行的最后一列添加了一个更新按钮。

当我更改g:textfields的值并单击更新按钮时,它会告诉我

Density #ID updated

但值不会改变。

我认为我在控制器中进行def更新时出错了。

以下是代码:

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来查看值是否正确,现在我不知道如何使textfield的值成为输入的值,它给了我相同的值它之前有,但它给我的消息说它已更新。 控制器是DensityController,域是密度

非常感谢任何帮助。谢谢:D

1 个答案:

答案 0 :(得分:1)

从正在打印的flash消息看起来好像正在更新实例(虽然“#ID”位看起来很奇怪 - 你是否替换了实际的id?)。

可能是那个

densityInstance.properties = params

实际上并不匹配任何实例属性,因此在保存之前实际上没有更改任何实例属性。您确定已将gsp输入字段命名为与Density类字段的名称相匹配吗? Rcommodity是密度的属性,例如?

可能有助于添加gsp页面的表格位以及密度域类。