【问题标题】:How to retain a search keyword during Grails pagination?如何在 Grails 分页期间保留搜索关键字?
【发布时间】:2015-03-26 03:43:45
【问题描述】:

我有一个简单的 Grails 应用程序。它具有带有一个文本字段和一个提交按钮的搜索表单。如果结果总数超过 100,则出现 Grails 分页,如果我点击第二页的链接,调用会转到同一个控制器的方法,但是这次没有通过搜索关键字(因为分页不是搜索表单的一部分)并且它不在“参数”中。这种情况如何处理?

【问题讨论】:

    标签: grails pagination


    【解决方案1】:

    您可以使用pageScope.variables 将所有参数传递给控制器​​,例如

    <g:paginate params="${pageScope.variables}" total=.../>
    

    【讨论】:

    • 谢谢,但这不起作用。我认为问题在于我的 searchForm 是一个模板,而 searchResults 是另一个模板。这 2 个模板是视图的一部分,即它们嵌入在 show.gsp 中。所以基本上,里面有'分页'标签的searchResults模板不知道searchForm模板中的'关键字'。我怎样才能访问它?
    • 您是否将搜索参数发送回视图?
    • 我注意到你的方式也有效,但要访问它的关键字,我必须在控制器端使用两级间接,如 params.params.keyword 我使用了以下方法,谢谢你的回答: params="${[keyword:pageScope.variables.params.keyword]}"
    【解决方案2】:

    如果您的搜索输入字段的名称是 q,那么您可以执行以下操作:

     <g:paginate controller="user" action="index" total="${total}" q="params.q"/>
    

    这会将您的搜索关键字保留在您的分页页面上。

    【讨论】:

      【解决方案3】:

      可以在分页标签中发送参数

      <g:paginate next="Forward" prev="Back"
              maxsteps="0" controller="book"
              action="list" total="${bookCount}"
              params="${[q:q, anotherParamether:anotherParamether]}" />
      

      Paginate documentation

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 2015-09-26
        • 2015-11-09
        • 2016-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多