我的网站上有这样的内容:
<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辆车。我怎么能做到这一点?我正朝着正确的方向前进吗?
答案 0 :(得分:4)
Grails有一个标记formRemote
,可以为您完成此操作。
基本上,不使用常规form
标记,而是使用formRemote
标记,指定要调用的控制器和操作以及要使用结果更新的dom元素。
您还可以查看执行类似操作的submitToRemote
代码。
我已经在正确的方向上找到了一些代码。它未经过测试,因此可能存在错误
控制器:
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>
TEMPLATE:
${car.carModel}