2011-12-10 18 views
2

我在我的网站是这样的:Grails的刷新格

<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:再次调用渲染并更新ajax(仅更​​新该部分),并且值改变。每次点击时,显示接下来的20辆车。我怎么能做到这一点?我在正确的方向吗?

回答

4

Grails有一个标签formRemote可以为你做到这一点。 基本上,不是使用常规的form标记,而是使用formRemote标记,指定要调用的控制器和操作,并使用结果更新dom元素。 你也可以看看submitToRemote标签,它做了类似的事情。

我已经在正确的方向上找出了s oset下的一些代码。它不是测试,因此有可能是在它

控制器错误:

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}