0

我在同一个问题上被困了几天,但我一无所获。

我正在使用 ag:formRemote 标签来更新消息模板

<g:formRemote url="[action: 'updateStatus']" update="messages" name="updateStatusForm"
                    onSuccess="document.updateStatusForm.message.value='';">
                    <g:textArea name="message" value="" cols="3" rows="1"/><br/>
                    <g:submitButton name="Update Status"/>
                </g:formRemote>

然后此表单在我的控制器中调用 updateStatus 方法

def updateStatus(String message) {
        def status = new Post(message: params.message, author: lookupPerson())
        status.save(flush: true, failOnError: true)
        def messages = currentUserTimeline()
        render template: 'profileMessages', collection: messages, var: 'profileMessage'
    }

但是 def 状态行应该是

def status = new Post(message: params.message, author: lookupPerson(), child: Child.get(childInstance.id)

在我看来,我有一个由用户选择的 childInstance。无论如何我可以在控制器中保存一个全局变量,或者我可以在 formRemote 标记中发送子实例参数 id。我不认为有,因为我今天一直在尝试这样做。

任何帮助都会很好。我知道唯一可行的方法是将 childInstance.id 写入属性文件并将其读回,但必须有更好的方法,因为我认为这将是非常糟糕的做法。

4

2 回答 2

1

您可以将参数添加到<g:formRemote>

grails 文档中的示例:

<g:formRemote name="myForm" update="updateMe"
              url="[controller: 'book', action: 'byAuthor', params: [sort: 'title', order: 'desc']]">
    Author: <input name="author" type="text" />
</g:formRemote>
于 2012-09-11T12:34:04.210 回答
0

您可能会在<g:hiddenField name="childId" value="${childInstance.id}"/>您的 formRemote 标记中添加一个,这会以与消息相同的方式将其发送到服务器。

于 2012-09-11T00:58:18.053 回答