我用到的grails是2.4.4。
该版本下游一个标签g:paginate
该标签下有以下几个参数:total(必须要填写的项)、controller、action、prev、max、offset等等,我用到的有这几个参数,详细参数的使用参考API文档。
普通分页:(Tsystemparam是我代码的一个域类)
后台代码:写在控制器下需要执行的方法
params.max=5//给params参数附一个map集合key=max、value=5,每页展示的数据条数
\\跳转到showsysParamList.gsp页面,传递到前台的map集合带有查出来的所有数据和数据的总数量,在使用list方法时一定要传入params参数,因为params参数设置了每页显示的数据量和offset(偏移量,如果不设置max和offset则默认值为10,设置了max之后offset可以根据数据来自动调整偏移量)。统计的数量的总个数一定要传递个前台,用前台的total来接收。
render(view:"showsysParamList",model:[sys:Tsystemparam.list(params),sysCount:Tsystemparam.count()])
带条件分页
//给params添加map集合key=max,value=5
params.max=5;
//Grails的 HibernateCriteriaBuilder 实例,可用来构建Criteria查询。
def c = Tsystemparam.createCriteria()
//params的值必须要有,否则会无法使用totalCount方法
def results = c.list(params) {
like("name", "%w%")
//如果查询的条件不写死的话可以在下边传值时传给前台带着走
//可以带其他条件查询或者排序,我的只用到了模糊查询其余的都省略了
//and {
// between("balance", 500, 1000)
// eq("branch", "London")
//}
//maxResults(10)
//order("holderLastName", "desc")
}
//totalCount方法只有在def results = c.list(params) {传递给list方法params参数才可以使用params可以使用max:5,offset:0来代替
render(view:"showsysParamList",model:[syst: results, sysCount:results.totalCount])
前台代码:只需添加该标签即可
<g:paginate next="下一页" prev="上一页" controller="system" action="sysparamlist" total="${sysCount}"/>
total接收到的是控制器传递过来的查询出来的总共的数量,如果在前台没有设置max和offset可以在p:paginate标签下添加max和offset参数,效果同控制器中添加