代码之家  ›  专栏  ›  技术社区  ›  Mike Sickler

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

  •  0
  • Mike Sickler  · 技术社区  · 15 年前

    如何构造页面和部分模板,以便Ajax可以很好地使用 <paginate> 列排序呢?

    我目前有一个search.gsp页面,其中有一个远程字段调用控制器来更新模板。这一切都很好。但是,列排序和分页操作会导致我的search.gsp被模板视图完全替换。

    从my 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)
        }
    

    'u resourcesearchresultpanel.gsp只是一个包含此内容的表 <页码& gt; 标签:

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

    问题是当 <页码& gt; 标记调用控制器,整个页面将使用_resourcesearchresultpanel.gsp模板的内容刷新,而我只希望_resourcesearchresultpanel.gsp本身在search.gsp中刷新。

    没有 update 属性就像 remoteField 标签…

    2 回复  |  直到 11 年前
        1
  •  1
  •   leebutts    15 年前

    paginate标记不支持生成Ajax链接,因此您必须编写自己的标记版本,该标记调用远程链接而不是链接。

    干杯

        2
  •  1
  •   user1565600    11 年前

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

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

    如有任何问题,请随时回复。