Grails освежить div - PullRequest
       0

Grails освежить div

2 голосов
/ 11 декабря 2011

У меня есть что-то вроде этого на моем сайте:

<body>
<div id="1">
content1
</div>
<div id="2">
content2
</div>

<g:render template="/layouts/aa1"/>

<g:form name="myForm" action="myaction">
<g:submitButton name="update" value="Update" />
</g:form>
</body>

Мой макет aa1 выглядит примерно так:

<div id="3">
       <g:each in="print">
       ${it.carModel}
       </g:each>

</div>

А контроллер:

def updateDiv = {
def max = 20
def offset = 0 
   if(params=["myForm"]){
       def print = Cars.list(max: max, offset: offset + 10)
   }
render(template:'aa1', [print: print])
}

Что я хочу сделать, так это то, что когда я нажимаю «Обновить», g: render вызывается снова и обновляется с помощью ajax (обновляется только эта часть), и значения меняются.При каждом нажатии отображаются следующие 20 автомобилей.Как я могу это сделать?Я в правильном направлении?

1 Ответ

4 голосов
/ 11 декабря 2011

Grails имеет тег formRemote, который делает это для вас. По сути, вместо обычного тега form используется тег formRemote, указывающий контроллер и действие для вызова и элемент dom для обновления с результатами. Вы также можете посмотреть на тег submitToRemote, который делает нечто подобное.

Я заглушил какой-то код ниже, чтобы вы выбрали правильное направление. Он не проверен, поэтому в нем могут быть ошибки

CONTROLLER:

def updateDiv = {
    def max = 20
    def offset = 0 

    if(params=["myForm"]){
       def print = Cars.list(max: max, offset: offset + 10)
    }

    render(template:'aa1', collection:print, var:'car')
}

GSP:

<body>
    <div id="1">
        content1
    </div>
    <div id="2">
        content2
    </div>

    <g:formRemote name="myForm" on404="alert('not found!')" update="3"
              url="[ controller: 'YourControllerName', action:'updateDiv' ]">
        Book Id: <input name="id" type="text"></input>
    </g:formRemote>

    <div id="3">
         <g:render id="" template="/layouts/aa1" collection="${print}"/>
    </div>
</body>

ШАБЛОН:

${car.carModel}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...