jsp分页带条件查询时,点击上一页或下一页,没有按条件查询数据。

问题来源:

        当我输入“分”进行查询时,第一页能正确显示,但当我点击上一页和下一页时,并没有显示条件“分”的上一页和下一页,而是显示了数据库的所有内容。而且“分”字也没有在输入框中回显。

 问题分析:

        当点击上一页和下一页的时候,输入框的数据“分”没有提交给服务器,因此数据库查询全部数据,同时无法回显(根本没有数据)。

<form action="${pageContext.request.contextPath}/SelectManageServlet" method="get">
    <input type="text" placeholder="请输入课程名称" name="course" value="${courseValue}">
    <input type="submit" value="查找课程"><span style="color:red;">${msg}</span>
</form>

尝试解决:

        猜想一:点击上一页或下一页的按钮时,同时也关联到查询课程按钮,使它也点击,这样服务器就可以接收到数据“分”了。但是这样有个问题,但我查询“分”到第四页时,我把输入框里的“分”改成“学”,不点查找课程按钮,而是点击下一页,这样就查询到“学”的第五页了,但数据库里可能没有“学”的第五页,也许只有三页,这会出现异常的。所以这个想法被抛弃。

同时,我们可以在百度的搜索框里实验,输入java,显示java的第一页 ,再输入ecplise,然后点击下一页,发现搜索的是java的第二页,说明,点击上一页和下一页时,并没有同时点击搜索框的搜索按钮,提交的数据也不是搜索框里的实时数据,搜索框里的数据只是服务器的数据回显,展示给用户你搜索的是啥,使用户有更好的体验。

所以我们可以得到猜想二:

        点击上一页和下一页时,提交了上一次你搜索的数据(也是通过EL表达式数据回显来做的),pageSize和pageNum。如图:

<div align="right">
    <input class="layui-btn" type="button" onclick="window.location='SelectManageServlet?urlCourse=${courseValue}&pageSize=${pageBean.pageSize}&pageNum=1'" value="首页">
    <input class="layui-btn" type="button" onclick="window.location='SelectManageServlet?urlCourse=${courseValue}&pageSize=${pageBean.pageSize}&pageNum=${pageBean.pageNum-1}'" value="上一页">
    <input class="layui-btn" type="button" onclick="window.location='SelectManageServlet?urlCourse=${courseValue}&pageSize=${pageBean.pageSize}&pageNum=${pageBean.pageNum+1}'" value="下一页">
    <input class="layui-btn" type="button" onclick="window.location='SelectManageServlet?urlCourse=${courseValue}&pageSize=${pageBean.pageSize}&pageNum=${pageBean.pageCount}'" value="尾页">
</div>

服务器端这样做,已经写的很详细了。

ListService listService = new ListServiceImpl();
String urlCourse = request.getParameter("urlCourse");//从分页传递过来的参数
String course = request.getParameter("course");//从输入框获取的数据
/*
三种情况:
    第一种情况:当输入框没有数据,并且分页也没有数据时,查询全部
    第二种情况:当输入框有数据,带条件查询
    第三种情况:当输入框没有数据,但分页有数据时,赋值给course,然后执行第二种情况,带条件查询
 */
if(urlCourse != null && course == null){
    course = urlCourse;//第三种情况
}
PageBean<Course> pageBean;
if(course != null && course.trim().length() != 0){
    pageBean = listService.findByPage(course,page_size,page_num);//第二种情况
}else {
    pageBean = listService.findByPage(page_size,page_num);//第一种情况
}
request.setAttribute("courseValue", course);//数据回显用
request.setAttribute("pageBean",pageBean);

写完后运行,成功按条件分页查询。

总结:刚发现bug的时候,感觉好难不会😢,自己慢慢探索,解决问题,解决后似乎好像也不是那么难嘛😁(ps:我的第一篇博客)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值