我有一个 gsp 页面,比如 search.gsp,其中有一个名为“ResultContentAsFacets”的 div。div 显示另一个 gsp 的内容。这另一个 gsp 被命名为 subSearch.gsp。现在在此页面中,我有一个链接,该链接调用操作 subSearch,以便它重新加载 subsearch.gsp。但问题是它也会重新加载 search.gsp。我应该怎么办??
问问题
387 次
1 回答
0
用户 tim_yates 基本上是正确的,但您可能需要 formRemote 而不是 remoteLink。
基本上你会在 search.gsp (取自文档: http: //grails.org/doc/latest/ref/Tags/formRemote.html有一些变化)
<g:formRemote name="search"
update="ResultContentAsFacets"
method="GET"
url="[controller: 'changeThis', action: 'subSearch']">
<!-- your input/ search fields -->
</g:formRemote>
<div id="ResultContentAsFacets">
<!-- this div is updated with the result of the submit -->
<!-- you may already render subSearch.gsp on first pageload here.
Just pass all entries to the view in your search action -->
</div>
在您的“ChangeThisController”中创建一个执行实际搜索的操作 subSearch
但是,您只需渲染模板(subSearch.gsp),而不是返回结果:
def subSearch() {
// perform search and store collection in variable called "result"
// (change naming at your will)
render template: 'subSearch' model: [result: result]
}
您的 div whit id="ResultContentAsFacets" 将被更新,但不会重新加载整个页面
我的示例不处理错误情况或在浏览器中关闭了 javascript 的用户。如果您想在搜索结果中分页,还有更多工作要做……但这是可能的。我也不确定您是否必须包含 jquery 或<r:require module="jquery">
使用<g:formRemote>
标签。在文档中查找。希望这可以帮助...
于 2013-09-27T09:11:00.243 回答