我是Grails的新手,但g:formRemote命令遇到了一些问题。
我想要一个g:textArea框向我的 Controller 发送一条消息并保存该消息。
之后,应通过表单REMOTE Ajax 来更新页面,以便消息出现在页面上。
但是,formRemote调用假定未将页面更新,而是将给定的url视为真实链接,并希望我重定向到此(不存在).jsp网站。
我要启动的方法在 Controller 中被调用
我尝试了许多解决类似问题的解决方案,但似乎这个问题与他们的解决方案不同
这是代码:<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和jQuery的
我希望这些信息足以让某人看到我的缺失
最佳答案
在表单上单击“提交”按钮后,数据将发送到formRemote标记的url参数中列出的方法。然后进入该方法,进入注释掉的render标签,该标签将数据输出回formRemote标签的update标签中提到的div中的gsp页面。
formRemote依赖javascript库来处理grails文档中提到的ajax内容:
因此,请删除历史记录div中的内容,取消注释postMessage方法中的两行,并包括引用的JavaScript库之一。