1

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で呼び出されるアクションです。

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'

この種のアプローチは、JeffBrownsのTwitterチュートリアルで見ました。

私が見ている可能性のある失敗:

  • コメントアウトされたrendertemplateコマンドは、Ajaxと関係があります(コメントしない場合、発生するのは、テンプレートの投稿がリダイレクトされたページにレンダリングされることだけです。
  • AjaxとjQueryの両方の使用法(しかし、私はg:とgroovyのものを使用したばかりで、jQuery libをインポートしていないので、それがポイントになるとは思わない)
  • これはremoteFunctionを使用すると簡単になる可能性があります(この場合、remoteFunctionを機能させる方法がわかりません)

この情報が私が欠けているものを誰かに見せるのに十分であることを願っています

4

1 に答える 1

1

フォームで送信ボタンがクリックされると、データは formRemote タグの url パラメータにリストされたメソッドに送信されます。次に、そのメソッド内にいると、formRemote タグの update タグに記載されている div の gsp ページにデータを出力するコメント アウトされた render タグに到達します。

formRemote は、grails のドキュメントに記載されているように、ajax を処理するために JavaScript ライブラリに依存しています。

7.7.1 Ajax サポート

デフォルトでは、Grails には jQuery ライブラリが同梱されていますが、プラグイン システムを通じて、Prototype、Dojo:http://dojotoolkit.org/、Yahoo UI:http://developer.yahoo.com/yui/ などの他のフレームワークのサポートが提供されます。 Google ウェブ ツールキット。このセクションでは、Ajax に対する Grails のサポート全般について説明します。開始するには、次の行をページのタグに追加します。

jQuery は、インストールしたプラグインによって提供される他のライブラリに置き換えることができます。これが機能するのは、Grails がアダプティブ タグ ライブラリをサポートしているためです。Grails のプラグイン システムのおかげで、次のようなさまざまな Ajax ライブラリがサポートされています (ただし、これらに限定されません)。

jQuery プロトタイプ道場 YUI MooTools

したがって、履歴 div にあるものを削除し、postMessage メソッドの 2 行のコメントを外して、参照されている JavaScript ライブラリの 1 つを含めます。

于 2012-07-07T19:44:21.853 に答える