如何构建我的页面和部分模板,以便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
属性......
答案 0 :(得分:1)
paginate标签不支持生成ajax链接,因此您必须自己编写调用remoteLink而不是link的标签版本。
欢呼声
利
答案 1 :(得分:1)
我建议您使用Grails的远程分页插件。这足以满足您的要求。有关详细信息,请参阅以下网站: -
http://www.grails.org/plugin/remote-pagination
请随时回复任何问题。