Grails:视图模板中的分页和排序问题

时间:2009-11-06 19:29:40

标签: grails

如何构建我的页面和部分模板,以便Ajax可以与<paginate>和列排序一起使用?

我目前有一个带有remoteField的search.gsp页面,该页面调用控制器来更新模板。一切正常。但是,列排序和分页操作会导致我的search.gsp完全被模板视图替换。

来自我的search.gsp:

<div id="searchBox">
  Enter a key or phrase: <g:remoteField  name="searchBox"  
                         update="resourceSearchResultPanel" paramName="q"                                            
                         url="[controller:'resourceEntry',action:'searchForResources']" 
                         />
</div>
<div id="resourceSearchResultPanel" />

我的控制器像这样处理搜索请求:

def searchForResources = {
        params.max = Math.min(params.max ? params.max.toInteger() : 10, 100)
        params.offset = params.offset ? params.offset.toInteger() : 0
        log.debug "Handling search post action"
        def q = params.q ?: null
        log.debug "Search phrase is $q"
        def searchResults
        if (q) {
            searchResults = [
                results: ResourceEntry.search(q,[offset: params.offset, max: params.max]),
                resultCount: ResourceEntry.countHits(q),
                q: q.encodeAsHTML()
            ]
        }
        render(template:"resourceSearchResultPanel",model:searchResults)
    }

_resourceSearchResultPanel.gsp只是一个包含此<paginate>标记的表格:

<g:paginate action="searchForResources" total="${resultCount}" params='["q":"${q}"]'  />

问题是,当<paginate>标记调用控制器时,整个页面会刷新_resourceSearchResultPanel.gsp模板的内容,而我只想在search.gsp中刷新_resourceSearchResultPanel.gsp本身。 。

update代码中没有remoteField属性......

2 个答案:

答案 0 :(得分:1)

paginate标签不支持生成ajax链接,因此您必须自己编写调用remoteLink而不是link的标签版本。

欢呼声

答案 1 :(得分:1)

我建议您使用Grails的远程分页插件。这足以满足您的要求。有关详细信息,请参阅以下网站: -

http://www.grails.org/plugin/remote-pagination

请随时回复任何问题。