Grails / AJAX: обновление произвольной области на странице с помощью g: submitToRemote - PullRequest
3 голосов
/ 24 октября 2010

В GSP (страница сервера Groovy) я использую <g:submitToRemote update="..."> для обновления <div> после вызова на стороне сервера.

Согласно тегу документации и другим источникам в Интернете, цель <div> может быть произвольно размещена на странице. Однако в моих тестах я обнаружил, что <div> должен окружать тег <g:submitToRemote>.

Если это , а не , <div> будет обновлено с некоторым "случайным" содержимым (то есть, части формы, которая окружает тег <g:submitToRemote>). 1018 *

Рассмотрим следующий код GSP:

<html>
<head>
    <g:javascript library="prototype" />
</head>
<body>

<div id="updateMe_NOT_WORKING">${message}</div>

<g:form>
    <div id="updateMe_WORKING">
        <g:submitToRemote value="Click Me"
            action="someAction" update="updateMe_NOT_WORKING" />
    </div>
</g:form>

</body>
</html>

Это на Граалсе 1.3.4.
Что мне не хватает? - Спасибо

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Согласно моим тестам, атрибут g:submitToRemote action должен не указывать на текущее действие текущего контроллера (так как это вставит / продублирует текущее представление в текущий вид).

Работает, если указать альтернативное действие в g:submitToRemote - т.е.

<g:submitToRemote value="Click Me"
    action="ajaxAction" update="updateMe" />

Если это действие предоставляет модель - т.е.

def ajaxAction = { [message: 'foo'] }

тогда должен быть соответствующий GSP - который в этом случае должен заявить,

$message

В качестве альтернативы, действие может использовать метод render - например,

def ajaxAction = { render 'foo' }

Я оставлю этот вопрос открытым на некоторое время, на случай, если могут появиться дополнительные ответы, и, если их нет, примет этот ответ в качестве решения.

Спасибо

3 голосов
/ 01 декабря 2010

Я думаю, проблема в том, что вы не указываете контроллер для своих действий. Попробуйте добавить controller = "..." в тег g: submitToRemote. Или, по крайней мере, укажите это в g: form.

Я уверен, что <div> не нужно оборачивать.

...