看到有人在解决对jsp页面如何对进行所查询出的结果再分页处理的问题的时候,在这里总结一下JSP页面如何对进行所查询的结果再分页,以及可能新手容易困惑的几个小问题,在这里进行探讨
①首先,JSP页面对进行所查询出的结果再分页,这种情况一般是出现在我们实际项目开发中,进行多条件联合查询,这就涉及到其中的拼写SQL语句,在这里暂时不讲解多条件下拼写SQL语句的问题.
②涉及到对JSP页面所查询的结果再分页,其最根本的原因就是参数传递的问题,如何把结果页面的参数传递到下一页,这才是处理问题的关键.下来讲解一下问题的实际处理解决
在这里假设 JSP页面是
<form action = "listinfo.action" method="post" id="form2">
.........
</form>
比如在用户点击确定以后,进行数据下拉框选择提交以后,程序运行到后台,通过SQL联合查询获取到最后我们需要的结果,但是,在前台页面对展示的结果进行下一页查询的时候,却发现所获取的数据丢失,这是什么原因呢?这是因为点击下一页的时候,请求参数丢失,所以设想一下,如果请求参数不丢失,问题是不是就解决了呢?
这里指出错误的写法:(这样的写法是丢失请求参数,会对当前所选择的请求参数作为下一页查询的时候,会造成当前请求参数丢失)
这里给出部分代码:这是JSP页面点击上一页(正确的写法,这里采用的是javascript,将当前页面所有请求参数加上请求页面参数,结果就正确)
这里是javascript里面:
这样就可以解决jsp页面如何对进行所查询出的结果再分页处理的问题.
③还有的人会发现,就是对结果页面再分页查询的时候,可以进行结果页面再分页,但是,出现的问题就是比如筛选的页面有20条,可以进行一条10页查询,本来两页就可以了,可是,总是可以进行点击下一页,即使下一页没有任何数据,这个问题是怎么产生的呢,大家可以看看他的代码;
public String execute() throws Exception {
orderList = dao.findDesCollectByCondition(page, 100, goodstype, goodstime, goodsprice);
totalPages = dao.getTotalPages(100);
return SUCCESS;
}
看出上面的错误了吗? 这是因为你的getTotalPages()方法也是没有多个参数进行联合查询 想解决这个问题,就应该采用以下方式
public String execute() throws Exception {
orderList = dao.findDesCollectByCondition(page, 100, goodstype, goodstime, goodsprice);
totalPages = dao.getTotalPages(100,goodstype, goodstime, goodsprice);
return SUCCESS;
}
这个问题才算真正解决