Java 如何使用grails分页

Java 如何使用grails分页,java,grails,pagination,criteria,Java,Grails,Pagination,Criteria,我是grails的新手,我尝试过使用grails文档中的grails分页标记,我在index.gsp中有一个搜索表单 我不知道如何传递params.max和params.offset 我只使用一个动作索引 我有一个索引操作,其中包含列出一些书籍的查询: params.max = 10 params.offset = 0 def author=params.author // i get the input search params def max = 10 def offset = 0 if(

我是grails的新手,我尝试过使用grails文档中的grails分页标记,我在index.gsp中有一个搜索表单

我不知道如何传递params.max和params.offset 我只使用一个动作索引

我有一个索引操作,其中包含列出一些书籍的查询:

params.max = 10
params.offset = 0
def author=params.author // i get the input search params
def max = 10
def offset = 0
if(params.max){
    max = params.max
}
if(params.offset){
    offset = params.offset
}

def bookPagin=Book.createCriteria().list {      
    eq("author", author)}
    maxResults(max)
    firstResult(offset )
}
这是my index.gsp中的分页标记:

 <g:paginate controller="displayBook" action="index" total="${bookPagin.size()}" params="[author:author]"/>

现在,这段代码显示前10个结果,但当我单击第二页时
它不接受输入author参数,尽管我在GET请求中使用author参数,但是还有其他解决方案吗

使用grails进行分页非常容易实现。请通过


您现在应该可以实现分页了。

下面是我将如何实现的

def searchString = "${params.author}%"
def searchResults = Book.findAllByAuthorLike(searchString, params) // max, offset automatically handled
def total = Book.countByAuthorLike(searchString)
render (model:[searchResults: searchResults, total: total])
在您的GSP中,使用以下内容迭代您的
搜索结果

<g:each var="book" in="${searchResults}">...
。。。
之后包括:

 <g:paginate controller="displayBook" action="index" total="${total}"/>


我必须与条件一起使用,因为我有多个搜索参数,在索引操作中:在所有分页示例中,我发送类似authorList[authorList:authorList]的对象,它们将参数从索引操作发送到另一个称为g:paginate的操作,但我下次只使用一个动作索引,包括您的实际代码。我们只能按你在问题中所说的去做。这没有多大帮助。params属性对我来说很好。您还没有包括控制器方法的其余部分,您可以在其中设置
模型
属性,因此请检查
作者
是否是正确的变量名-我通常使用
[作者:params.author]
。仅供参考,如果
操作
控制器
属性与当前页面相同(通常是相同的),则可以省略它们。