Java Grails编辑和更新数据库对象

Java Grails编辑和更新数据库对象,java,grails,controller,gsp,Java,Grails,Controller,Gsp,我正在尝试创建grails应用程序,而不是使用脚手架来更好地理解它的“思维方式”。) 我坚持使用编辑/更新方法。 在“编辑”按钮上,我打开了与创建对象时相同的输入表单。 所有字段都用信息填充,id在链接中传递 在“编辑消息”中,我想更新现有对象,但我得到的只是创建新对象或出现错误-无法在空对象上设置属性“sender” 我的“edit.gsp”如下所示: <!DOCTYPE html> <html> <head> <meta name="

我正在尝试创建grails应用程序,而不是使用脚手架来更好地理解它的“思维方式”。) 我坚持使用编辑/更新方法。 在“编辑”按钮上,我打开了与创建对象时相同的输入表单。 所有字段都用信息填充,id在链接中传递

在“编辑消息”中,我想更新现有对象,但我得到的只是创建新对象或出现错误-无法在空对象上设置属性“sender”

我的“edit.gsp”如下所示:

    <!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main"/>


</head>
<body>
<h2>Edit this message</h2>

    <g:if test="${flash.message}">
    <div class="alert alert-error" style="display: block">${flash.message}</div>
    </g:if>
    <div class="createStuff" id ="inputs">
        <g:formRemote url="[action: 'editSave']" update="allTheMessages"
        name="updateStatusForm">
            <table>
                <tr>
                <td>Sender:</td>
                <td><g:textField name="sender" value="${message.author}"/></td>
                </tr>

                <tr>
                <td>Message</td>
                <td><g:textArea name="msg" value="${message.text}"/></td>
                </tr>
                <tr>
                <td>Some status</td>
                <td><g:textField name="status" value="${message.status}"/></td>
                </tr>
                <tr>
                <td>Wanna publish?</td>
                <td><g:select name="toPublish" from="${['Publish','Archive']}" keys="${[true,false]}"/></td>
                </tr>
            </table> 
            <g:submitButton name="Edit the msg"/>
        </g:formRemote>
    </div>

</body>
</html>
我做错了什么?如何更新现有记录?
非常感谢(提前)

GORM知道您从数据库成功加载记录时是否正在更新该记录。这是在您的代码中完成的:

def message2save = Message.get(params.id)
问题是您没有在表单中发送消息的id。因此,您需要添加:

<g:hiddenField name="id" value="${message.id}" />

太棒了,谢谢。我知道这很容易。现在工作起来很有魅力。:)你救了我一天。
<g:hiddenField name="id" value="${message.id}" />