我是 Grails 的新手,g:formRemote 命令遇到了一些问题。
我希望 ag:textArea 框向我的控制器发送消息并保存此消息。之后,应该通过formRemote 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 教程中看到了这种方法。
我看到的可能失败:
- 注释掉的渲染模板命令与 Ajax 有关(当我不评论它时,唯一发生的事情是模板帖子将在重定向页面上呈现
- Ajax 和 jQuery 的使用(但我不相信这可能是重点,因为我只使用了 g: 和 groovy 的东西,甚至还没有导入 jQuery 库)
- 使用 remoteFunction 可能会更容易(在这种情况下,我真的不知道如何让 remoteFunction 工作)
我希望这些信息足以让别人看到我错过了什么