Проблемы с отправкой формы с AJAX в Grails 2.0 - PullRequest
0 голосов
/ 03 февраля 2012

На моей странице GSP у меня есть эта форма:

<g:form action="ajaxAdd">
  <g:textArea id='postContent' name="content" rows="3" cols="50"/><br/>
  <g:submitToRemote value="Post"
      url="[controller: 'post', action: 'addPostAjax']"
      update="allPosts"
  />            
</g:form>

И на этой же странице у меня есть этот div:

<div class="allPosts">
    <g:each in="${user.posts}" var="post">
        <div class="postEntry">
            <div class="postText">
                ${post.content}
            </div>
            <div class="classDate">
                ${post.dateCreated}
            </div>
        </div>
    </g:each>
</div>

Когда я нажимаю на кнопку, приложение запускает действие addPostAjax в моем контроллере, но проблема в том, что я не могу узнать, как отправить обратно коллекцию user.posts для заполнения моего allPosts отд.

У кого-нибудь есть идея, пожалуйста. Спасибо.

1 Ответ

0 голосов
/ 03 февраля 2012

Чтобы использовать атрибут update в теге submitToRemote, необходимо отправить обратно обработанные сообщения.

Сначала создайте div, в котором вы отображаете пользовательские сообщения в шаблоне, например, _userPosts.gsp.Замените div на странице тегом render, чтобы использовать шаблон:

<g:render template="userPosts" />

Тогда в вашем контроллере addPostAjax должен выглядеть следующим образом:

def addPostAjax() {
    def user = ....

    render template: 'userPosts', model: [user: user], contentType: "text/plain"
}

Другойальтернатива - render user as JSON и написать javascript для обновления вашей страницы.

...