【发布时间】:2012-07-07 12:09:40
【问题描述】:
我是 Grails 新手,使用 g:formRemote 命令时遇到了一些问题。
我想要一个 g:textArea 框向我的控制器发送消息并保存此消息。 之后页面应该通过表单远程Ajax更新,以便消息显示在页面上。
但是 formRemote 调用不是更新页面,而是假定给定的 url 是一个真实的链接,并希望我重定向到这个(不存在的).jsp 站点。
我想启动的方法在我的控制器中被调用
我尝试了许多类似问题中提供的解决方案,但似乎这个问题与他们的不同
代码如下:
<div id="history">
<g:render template="posts" collection="${ messages }" var="message" />
</div>
<div class="postMessageForm">
<g:formRemote name="postChatMessage" url="[controller: 'meetingRoom',
action: 'postMessage']" update="history">
<div class="msg_box">
<g:textArea name="message" value="" style="width: 630px"/><br/>
</div>
<div style="float: right;">
<g:submitButton name="Send" style="width: 90px; height: 40px;"/>
</div>
</g:formRemote>
</div>
这是在我的 MeetingRoomController 中调用的 Action:
def postMessage() {
if (params.message != "") {
def thisUser = lookUpUser()
def thisRoom = thisUser.joinedRoom
def chatPost = new ChatPost(
message: params.message,
author: thisUser
)
thisRoom.addToChatHistory(chatPost)
}
// def messages = currentChatHistory()
// render template: 'posts', collection: messages, var: 'message'
我在 Jeff Browns Twitter 教程中看到了这种方法。
我看到的可能故障:
- out-commented render template 命令与 Ajax 有关(当我不评论它时,唯一发生的事情是模板帖子将呈现在重定向页面上
- Ajax 和 jQuery 的使用(但我不认为这是重点,因为我只使用了 g: 和 groovy 的东西,甚至还没有导入 jQuery 库)
- 使用 remoteFunction 可能会更容易(在这种情况下,我真的不知道如何让 remoteFunction 工作)
我希望这些信息足以让别人看到我错过了什么
【问题讨论】:
标签: ajax grails redirect groovy