分页思路服务器返回当前页的数据,总条数,再由js来生成分页标签。分页是配合服务器端来处理的, 不是存js做的分页。
因为如果数据量很大,比如有好几百页,存js分页就是悲剧了,存js分页是必须一次载入所有数据,性能很慢。
分页组件参数要由服务器传过来targetType,totalCount,numPerPage,pageNumShown,currentPage
框架会自动把下面的form中pageNum修改后,ajax重新发请求。下面这个form是用来存查询条件的
<form id="pagerForm" action="xxx" method="post">
<input type="hidden" name="name" value="xxx" />
</form>
分页组件处理分页流程:
1)
2)
分页组件使用方法:
<div class="pagination" targetType="navTab" totalCount="200" numPerPage="20" pageNumShown="10" currentPage="1"></div>
测试方法,currentPage从1改为2,就是第2页了,把上面那句改为:
<div class="pagination" targetType="navTab" totalCount="200" numPerPage="20" pageNumShown="10" currentPage="2"></div>
参数说明:
注意:
服务器端返回一个页面碎片,其中包括pagerForm, table, 和分页的div。只要把这个页面碎片组装好就行。
2、DWZ的分页组件使用如下:
根据文档的说明,要使用分页组件,页面中首先需要一个form,最简单的form必须包含一个pageNum参数;
<form id="pagerForm" action="xxx" method="post">
</form>
其次,分页组件参数要由服务器传过来,包括totalCount,numPerPage,pageNumShown,currentPage等,然后对分页进行组装:
<div class="pagination" targetType="navTab" totalCount="总条数" numPerPage="每页数量" pageNumShown="页标数字个数" currentPage="当前页数"></div>
例子页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
<%@taglib uri="/struts-tags"
<!--分页的form-->
<form id="pagerForm" action="<%=basePath%>/admin/customer_main.action" method="post">
</form>
<div class="pageHeader">
<!--查询的form-->
</div>
<div class="pageContent">
</div>
运行说明:
![[转载]Dwz框架笔记(二) 《DWZ笔记二》分页组件使用 - heavengate - Heavengate的博客](http://img9.ph.126.net/S6Ez7uC2jNInAq7AFlx4yg==/2803772243032495999.jpg)
<form id="pagerForm" action="<%=basePath%>/admin/customer_main.action" method="post">
</form>
如:点击下一页,form中的pageNum由1变成2,并根据action的url传送至后台,因此在后台中,需要定义一个变量pageNum来接收这个参数,同时将pageNum赋值给当前页面currentPage,剩下的就是后台分页处理。
后台action中,java文件定义:
private int pageNum=1;//dwz分页使用
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
//分页,pager是用户自定义的分页Pager类,包含了分页组件需要返回的参数
public String pageHandle()throws Exception{
System.out.println(this.keywords+".........numPerPage:"+this.numPerPage);
this.pager.setCurrentPage(this.pageNum);
System.out.println(this.pageNum+":pageNum");
this.pager.setEveryPage(this.numPerPage);
System.out.println(pager.getEveryPage());
String tableName="Customer";//查询Customer表
this.pager.setPageName(tableName);
String conditionString="";
if(!this.keywords.trim().equals(""))
{
conditionString = "id>0 and cus_name like '%"+keywords.trim()+"%' ";
System.out.println(conditionString);
}
else
conditionString="id>0 ";//设置查询条件即sql中where后面的语句
this.pager.setConString(conditionString);
System.out.println(pager.getCurrentPage());
Result result = pagerProduct.listProduct(pager);
//获取新的page,此时的page已经包所有的信息
this.pager = result.getPager();
this.customers = (List<Customer>)result.getContent();
return SUCCESS;
}
运行结果:
附:
为了方便使用DWZ的分页功能,后台中,可以自定一个简单的Page类,对页面碎片的参数进行接收:
Page.java
public class Page {
//当前页数
private int currentPage = 1;
//每页显示数量
private int everyPage = 10;
//总页数
private int totalPage;
//总数量
private int totalCount;
//可以将dwz传过来的pageNum、numPerPage进行初始化
public Page(int pageNum , int numPerPage){
this.currentPage = pageNum;
this.everyPage = numPerPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
//设置总数量的同时,设置总页数
public void setCount(int totalCount){
this.totalCount = totalCount;
int temp = 0;
if(totalCount % this.everyPage != 0){
temp++;
}
this.totalPage = totalCount / this.everyPage + temp;
}
public int getCurrentPage() {
return currentPage;
}
public int getEveryPage() {
return everyPage;
}
public int getTotalCount() {
return totalCount;
}
}
因为使用了DWZ的功能,所以Page类的属性可以写的比较简单,往常的page根据需要,一般还有像hasPrePage(是否有上一页)、hasNextPage(是否有下一页)、beginIndex(起始点)等等参数..
![[转载]Dwz框架笔记(二) 《DWZ笔记二》分页组件使用 - heavengate - Heavengate的博客](http://img8.ph.126.net/wpjnl3IJOyQmq7fsBsVWhg==/1585267068852168938.jpg)