ZK提供两种分页方式,一种是自带的“mold="paging"”的形式;另一种是采用“<paging>”组件添加分页功能。具体实现如下:
第一种:采用自带的“mold="paging"”:
infoList.zul:
<zk>
<window id="mainwin" border="normal" width="600px"
apply="${myComposer}">
<listbox id="li" mold="paging" pageSize="5">
<listhead>
<listheader label="Id" sort="auto(Id)"/>
<listheader label="Name" sort="auto(Name)"/>
<listheader label="Address" sort="auto(Address)"/>
<listheader />
</listhead>
<listitem self="@{each=in }">
<listcell id="colId" label="@{in.id }"></listcell>
<listcell id="colName" label="@{in.name }"></listcell>
<listcell id="colAddr" label="@{in.address }"></listcell>
<listcell></listcell>
</listitem>
</listbox>
</window>
</zk>
后台控制类 MyComposer.java:
public class MyComposer extends GenericForwardComposer {
protected Textbox name;
protected Textbox address;
private Listbox li;
private Window mainwin;
private AnnotateDataBinder binder;
private Service service;
private List<Info> infoList;
private int totalsize;
public void setInfoList(List<Info> infoList) {
this.infoList = infoList;
}
public void setService(Service service) {
this.service = service;
}
public void onCreate$mainwin(Event event) throws Exception {
binder = new AnnotateDataBinder(mainwin);
binder.loadAll();
}
public void doAfterCompose(Component component) throws Exception {
super.doAfterCompose(component);
infoList = service.findAllInfos();
totalsize = infoList.size();
li.setModel(new ListModelList(infoList));
li.setItemRenderer(new ListitemRenderer() {
@Override
public void render(Listitem item, Object data) throws Exception {
// TODO Auto-generated method stub
Info itinfo = (Info) data;
Listcell colId = new Listcell();
Listcell colName = new Listcell();
Listcell colAddr = new Listcell();
colId.setLabel(itinfo.getId().toString());
colId.setParent(item);
colName.setLabel(itinfo.getName());
colName.setParent(item);
colAddr.setLabel(itinfo.getAddress());
colAddr.setParent(item);
}
});
}
}
第二种:采用“<paging>”组件进行分页:
paging.zul:
<zk>
<window id="pagingWin" title="paging" border="normal"
apply="${paging_ctrl}">
<grid>
<rows>
<row>人员列表:</row>
<row>
<listbox id="li" width="100%">
<listhead>
<listheader label="ID" sort="auto(Id)" />
<listheader label="姓名" />
<listheader label="地址" />
</listhead>
</listbox>
<separator />
</row>
</rows>
</grid>
<paging id="pge" pageSize="10"></paging>
</window>
</zk>
后台控制类Paging_ctrl.java:
public class Paging_ctrl extends GenericForwardComposer {
private AnnotateDataBinder binder;
private Window pagingWin;
private Listbox li;
private Paging pge;
private List<Info> infoList;
int maxCount = 0;
private Service service;
public void onCreate$pagingWin(Event event) throws Exception {
binder = new AnnotateDataBinder(pagingWin);
binder.loadAll();
}
public void doAfterCompose(Component component) throws Exception {
super.doAfterCompose(component);
maxCount = service.findAllInfos().size();
pge.setTotalSize(maxCount);
final int PAGE_SIZE = pge.getPageSize();
redraw(0, PAGE_SIZE);
pge.addEventListener("onPaging", new EventListener() {
public void onEvent(Event event) {
PagingEvent pe = (PagingEvent) event;
int pgno = pe.getActivePage();// 页数(从零计算)
int start = pgno * PAGE_SIZE;
redraw(start, PAGE_SIZE);
}
});
}
@SuppressWarnings("unchecked")
private void redraw(int offSet, int pageSize) {
li.getItems().clear();
List<Info> list = service.findInfoByPage(offSet, pageSize);
for (Info info : list) {
Listitem item = new Listitem();
item.setValue(info);
item.appendChild(new Listcell("" + info.getId()));
item.appendChild(new Listcell(info.getName()));
item.appendChild(new Listcell(info.getAddress()));
li.appendChild(item);
}
}
public void setService(Service service) {
this.service = service;
}
}
分析:
第一种方式是把数据全部加载到内存再进行分页,达到几十W跳数据后将降低性能;
而第二种方式则采用hibernate的分页查询方式,性能将大大加强。因此推荐第二种方式。
分享到:
相关推荐
peak-linux-driver-8.15.2.tar
VSCodeUserSetup-x64-1.86.1
高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip 高分毕业设计 毕业设计源码 使用ncnn在ios+android上部署yolov5源码+详细说明.zip
课设毕设基于SSM的医院远程诊断系统--LW+PPT+源码可运行.
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
matlab实用的例程详解可供学习与参考理解,MATLAB 已经受了用户的多年考验 在欧美发达国家 MATLAB 已经成为应用线性代数 自动控制理论 数理统计 数字信号处理 时间序列分析 动态系统仿真等高级课程的基本教学工具 成为攻读学位的大学生 硕士生 博士生必须掌握的基本技能 在设计研究单位和工业部门 MATLAB 被广泛地用于研究和解决各种具体工程问题。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
javascript 中关于 this 的用法.zip
【课程设计】基于python实现多AGV路径规划算法研究源码.zip
【课程设计】基于间接卡尔曼滤波的IMU与GPS融合MATLAB仿真(IMU与GPS数据由仿真生成)源码.zip
静态网页比赛.zip
【毕业设计】缺陷检测-基于深度学习实现的高效轮胎磨损+缺陷检测算法实现python源码.zip
开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat11+ 开发软件:idea/eclipse(推荐idea)
21级太原理工大学JACVAEE实验报告,各位当个参考即可,不用过分较真,如果与你们想法不同,请以自己为主,各位加油。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
运用java语言设计了一个针对TCP/IP网络的基于SNMP网络设备的MIB信息采集系统。 这个系统采用三层模型进行设计 最底层负责SNMP中基本对象编码、定义,与设备连接通信等; 中间层在底层的基础上定义了MIB对象,负责OID与MIB对象间的转换,分析MIB信息文件以生成MIB树型结构,单个MIB变量信息查询等功能 顶层,即界面层则在中间层的基础上实现了用户界面。
QuarkCloudDrive网盘
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。