怎样对查询结果进行分页

在做项目时候遇到一个问题,请教下各位:

我看了jfinal_demo这个例子,其中有一个分页,看起来是很方便的,但他是不基于任何查询条件的,是对"select * from bloginfo",全表进行查询的。

现在我做的页面是这样,最上面有一个搜索条,可以加一些查询条件,比如单位、姓名这些,也就是在sql语句中拼接了where字句,通过提交表单调用Action进行查询,查询结果当然是没有问题的,但如果还用demo中的分页方法的话,由于通过url链接来调用Action只会传递一个当前页的参数,没有别的参数,这样就会丢失掉查询条件,导致结果错误,而页面在点击查询后已经刷新,表单中也没有查询条件了。表单中的内容是一个Model的某些属性,在action是通过getModel来获取的。

不知有没有什么好的办法解决这个问题,能对查询结果进行分页,不丢失查询条件。谢谢!

评论区

JFinal

2017-08-03 10:06

把 sql 写好,然后直接扔给 model 的 paginate 方法就可以了,详细介绍看一下手册

yzdoraemon

2017-08-03 10:22

@JFinal 谢谢詹总回答,我的问题是能查出来,用的也是paginate方法,是按查询条件查出来的,但点击下一页的时候,就没查询条件了,会查出全部内容的下一页

JFinal

2017-08-03 10:26

@yzdoraemon 那是因为你的查询条件没有保持住,在生成翻页链接的时候,上一次的查询条件要保持住让其继续有效

在查询页面用 getPara(...) 得到上一次的查询条件,然后用 setAttr(...) 保持住,最后在页面生成翻页 url 时,让 setAttr(...) 过来的参数参与生成参数值,例如生成这样的链接:
/blog/search?pageNum=3&title=keyWorkd

yzdoraemon

2017-08-03 12:43

@JFinal 谢谢詹总,这样传值已经可以传过去了,但在调用同样的方法的时候结果却不一样,是不是和getModel有关呢,这样传值是直接传的,而提交表单是传过去的Model,从Model获取的值

choubi

2020-10-20 13:42

@JFinal 您好,例子里面生成翻页URL的是在_paginate.html中生成的,但是有好几个页面引用了这个,setAttr(...)过来的参数要怎么设置到url中啊。

热门反馈

扫码入社