JSF 分页方案

一、方案一

 

1.使用MyFaces的扩展组件Tomahawk 1.1.9的<t:dataTable>和<t:dataScroller>标签

2.例子

 

                         <h:form prependId="false">

                            <t:panelGrid>

                                <t:saveState value="#{viewCustomerInfo.customerInfos}"/>

                                <t:dataTable id="paginator" value="#{viewCustomerInfo.customerInfos}" var="info" preserveDataModel="false" rows="3" styleClass="tb1" width="100%" border="0" cellspacing="0" cellpadding="0">

                                   <h:column>

                                       <f:facet name="header"><h:outputText value="code"/></f:facet>

                                       <h:outputText value="#{info.customerCode}"/>

                                   </h:column>

                                   <h:column>

                                       <f:facet name="header"><h:outputText value="name"/></f:facet>

                                       <h:outputText value="#{info.customerName}"/>

                                   </h:column>

                                </t:dataTable>

                                <t:dataScroller id="scroller" paginator="true" paginatorMaxPages="9" fastStep="5" paginatorActiveColumnStyle="font-weight:bold;" for="paginator" immediate="true">

                                   <f:facet name="first">

                                       <t:graphicImage url="../img/page/first.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="fastrewind">

                                       <t:graphicImage url="../img/page/rewind.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="previous">

                                       <t:graphicImage url="../img/page/previous.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="next">

                                       <t:graphicImage url="../img/page/next.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="fastforward">

                                       <t:graphicImage url="../img/page/forward.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="last">

                                       <t:graphicImage url="../img/page/last.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                </t:dataScroller>

                            </t:panelGrid>

                         </h:form>

 

3. 说明:

(1)使用一组dataTable和dataScroller标签,其中dataTable必须指定id和rows(当然还有value)

(2)将dataScroller的for属性的值设置为dataTable的id来完成关联(如果将dataScroller嵌套在dataTable的内部则不需要该设定)

(3)dataScroller中的facet标签的name值是固定取值(first,fastrewind,previous,next,fastforward,last来分别表示首页,上N页(其中N为dataScroller的fastStep的属性值,上一页,下一页,下N页,末页))

(4)由于dataTable中的数据是一次性读取(且manage-bean的scope是request),在翻页时数据会丢失,所以要用到<t:saveState>来保存状态,当然,如果manage-beand的scope为session则不会有此问题

(5)此方案的局限性:只适合数据量较小的分页,因为该方案一次行将数据全部取出并保存在内存中,如果数据超过一定的量,则影响性能,方案二解决了该问题

 

 

 

二、方案二

 

1.     使用MyFaces的扩展组件Tomahawk 1.1.9的<t:dataTable>和<t:dataScroller>标签

2.     对DataModel进行封装,该DataModel仅仅持有了一页的数据DataPage,并在适当的时候加载数据,读取我们需要页的数据。(代码见附件java code.jar)

3.     DataModel 是一个抽象类,用于封装各种类型的数据源和数据对象的访问,JSF中dataTable中绑定的数据实际上被包装成了一个DataModel,以消除各种不同数据源和数据类型的复杂性

4. 例子

 

                        <h:form prependId="false">

<t:panelGrid>

                                <%--<t:saveState value="#{viewCustomerInfo.customerInfos}"/>--%>

                                <t:dataTable id="paginator" value="#{viewCustomerInfo.dataModel}" var="info" preserveDataModel="false" rows="3" styleClass="tb1" width="100%" border="0" cellspacing="0" cellpadding="0">

                                   <h:column>

                                       <f:facet name="header"><h:outputText value="code"/></f:facet>

                                       <h:outputText value="#{info.customerCode}"/>

                                   </h:column>

                                   <h:column>

                                       <f:facet name="header"><h:outputText value="name"/></f:facet>

                                       <h:outputText value="#{info.customerName}"/>

                                   </h:column>

                                </t:dataTable>

                                <t:dataScroller id="scroller" paginator="true" paginatorMaxPages="9" fastStep="5" paginatorActiveColumnStyle="font-weight:bold;" for="paginator" immediate="true">

                                   <f:facet name="first">

                                       <t:graphicImage url="../img/page/first.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="fastrewind">

                                       <t:graphicImage url="../img/page/rewind.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="previous">

                                       <t:graphicImage url="../img/page/previous.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="next">

                                       <t:graphicImage url="../img/page/next.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="fastforward">

                                       <t:graphicImage url="../img/page/forward.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                   <f:facet name="last">

                                       <t:graphicImage url="../img/page/last.jpg" border="1" width="20px" height="18px"/>

                                   </f:facet>

                                </t:dataScroller>

                            </t:panelGrid>                         

</h:form>

 

5.说明

说明(1)(2)(3)同方案一

(4)因为此方案dataTable的value值是绑定一个dataModel,所以不需要用<t:saveState>来保存状态

(5)需要扩展抽象类javax.faces.model.DataModel,并定义一个DataPage对象来保存每页的记录

(6)所有扩展和自定义的类(见附件)

(7)此方案每次翻页只会取得所需页的数据,结合BaseHibernateService定义的方法,每次翻页返回一个DatePage对象

 

【参考文章】

1. http://www.blogjava.net/steady/archive/2005/12/30/26013.html

2. http://blog.sina.com.cn/s/blog_602feaa80100gdqu.html 

JSF经典的js分页 基于JSF框架的纯js分页,代码精简明了 立即下载

相关推荐

JSF分页组件

一个很简单的JSF分页组件,但是还不错,还有一个可以运行的程序在里面

JSF中使用dataScroller和dataTable实现分页及其相关问题

在JSF中实现分页是很简单的,尤其是应用Tomahawk中的dataScroller组件。任何后台代码都不用写,只需配置一下就好。来看下面的例子:    id="data"  value="#{roadForm.stationVec}   var="vec"  rows="10" >                                                        

小雷的博客 2614

jsf 分页实例jsf 分页实例

jsf 分页jsf 分页 可直接在myeclipse6.0以上版本运行

jsf 实现分页(页面实现)

其实jsf分页真的好简单哦,下面将列举一下实现列子 第一步: 、、、 值:action$fixing.data 绑定后台返回的 list集合,其中集合里放的是数据库中的所有记录。 rows 设定每分页的显示的行数。 第二步: ...

夜慕下的天空 651

JSF数据分页的简单实现

JSF分页有不少的组件可以使用,但用起来都不是想象的那么简单,这里自己实现了一个简单的分页实现,以提供大家分享。 有更好的意见请留言。或者去http://yyq2007aa.blog.163.com/blog/static/4418160920102841630949留言

银河麒麟鲲鹏aarch64架构安装docker和K8s

鲲鹏云服务器上安装docker-云社区-华为云 (huaweicloud.com) 这里我下载的版本是docker-18.09.3.tag docker 安装包地址:https://download.docker.com/linux/static/stable 配置system服务 在github对应分支的contrib/init/systemd/ 下面,提供了对应的docker.service以及docker.socket文件,可以直接拷贝到本地文件使用: 对应链接:https://github.c

qq_50007696的博客 9056

JSF(Myfaces) dataTable 操作测试

/** PCManager Suite*/package com.inphit.pms.web.system; import java.util.ArrayList;import java.util.List; import javax.faces.context.FacesContext;import javax.faces.event.ActionEvent; import org.ap...

编程资料大全 208

DVWA全级别详细通关教程

dvwa全级别详细通关教程,暴力破解,命令注入,CSRF跨站请求伪造,文件包含,文件上传​,SQL注入,XSS

m0_62063669的博客 1万+

t:dataScroller的使用-使用binding的时候会出现的问题

一.问题阐述        根据不同的输入条件,查询出符合要求的结果(records),放到list中,并将该list赋值给t:dataTable,在前台显示出来。当第一次搜索出来的records条数过多时,用t:dataScroller进行分页。  问题是当user点击t:dataScroller查看完第2或3页(即非第一页)以后,再输入不同的查询条件,想查看其他的records

3054

【机电杂谈2】BLDC和PMSM的特点和区别

在日常生活中,小到电动玩具,大到电动汽车,永磁电机的身影可以说是无处不在。有刷直流电机、无刷直流电机、永磁同步电机由于其结构和输出特定的不同也被应用到不同的场合。如果你经常拆一些玩具和家电,就会看到大量的有刷直流电机和无刷直流电机,而永磁同步电机主要应用在高精度的工业伺服和电动汽车领域。本文就从电机的结构和控制方面,对这几种常见的永磁电机做简单的梳理和归纳。

2938

实测避坑:用SGM61720做BUCK电路,SW引脚电压尖峰怎么压下去?

本文针对SGM61720在BUCK电路中SW引脚电压尖峰问题,提供实测避坑指南。通过分析电压尖峰、过冲等核心问题,详细讲解自举电阻调整、RC缓冲电路计算和PCB走线优化三大解决方案,帮助工程师有效降低SW引脚电压尖峰,提升系统稳定性和EMI性能。

weixin_42634811的博客 215

JSF大数据量查询分页控件源代码

      之前发过一篇JSF分页控件的文章,陆续有人向我索要源代码,特稍加整理贴于此。       com.m2.jsf.pagination包中为相关的类,新建一个分页应用只需要继承 PagerBean这个类       覆盖其中几个方法即可。具体见注释。 ...

caomm1982的专栏 377

树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)

选择 Interface Options > VNC > Yes 启用服务。2.在Windows电脑上安装VNC软件。重启树莓派:sudo reboot。3.使用VNC远程访问树莓派桌面。

qq_34184505的博客 2351

在JSF中实现分页(一)

对于大多数Web应用,分页都是必不可少的功能,当然在JSF中也一样,我在这里用两篇文章介绍两种方法来展示一下,如何在JSF中实现分页。本文假定你已经对JSF有了一些简单的了解,懂得基本配置和使用,并建立起一个blank项目。 ...

congyantong5437的博客 115

WSL2+Ubuntu20.04纯root环境搭建指南:告别权限烦恼的终极方案

本文提供了一份详细的WSL2+Ubuntu20.04纯root环境搭建指南,旨在为本地开发与学习打造一个免去权限干扰、极致流畅的Linux子系统环境。通过启用WSL2、安装Ubuntu 20.04,并执行核心的root用户设置,开发者可以彻底告别频繁的sudo操作,提升在文件操作、容器调试和系统配置等方面的效率。

time3的博客 474

[RK3568 Android11] 开发之调试RK809 codec音频-SPK喇叭

目录 前言 一、注册声卡顺序 二、SPK喇叭路由配置 三、tinyalsa调试工具 前言 瑞芯微RK809是一种复杂的功率管理集成电路(PMIC)集成编解码器,适用于由外部电源供电的多核系统应用;同时它也集成了音频编解码器,这样在硬件设计上可以直接使用RK809 codec功能,不必再外挂个其他codec芯片;RK809 codec不仅支持SPK,还支持耳机,MIC功能; 一、注册声卡顺序 设备树dts里面原厂帮我们配置好了rk809_sound,我们直接...

~未来可期~ 7414

JSF中自定义的分页标签的研究

 分页标签的研究:          pagination      com.pp.condition.PaginationTag              sortColumns        false        true                    sortTable        false        true          PaginationTag.j

614

【通信】多径衰落信道的matlab仿真

1 简介 2 部分代码 clearf_c=1e3; %carrier frequency(no modulation)time_1 = (linspace (0, 10, 1000)); %timesignal_in = sin (2 * pi *f_c* time_1); %sine wave plot (time_1, signal_in, 'b');grid on;

qq_59747472的博客 1383

分页说明

以文本方式查看主题-  胡子鱼JAVA FANS论坛  (http://www.3doing.net/forums/index.asp)--  『 JSP/Servlets/JSF 』  (http://www.3doing.net/forums/list.asp?boardid=8)----  在JSF中实现分页  (http:

watercolour 1207

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

分页解决方案

分页有两种情况,一种是将数据一次全部读取,然后再内存中分页;另一种是每次只获取一页的内容。这两种情况都应当在系统中用到,但他们对应的情况不同。一次全部读取的适用于小数据量,比如一个订单下的全部订单明细;而分页查询的情况适用于顶层对象的不同查询条件下的列表,比如全部订单列表。 内存分页 由标准分页组件来实现,比如rich:datascroller,它的明显优点是和要分页的内容是分离的。   这种情况...

yourenyouyu的专栏 196

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JSF primefaces dataTable paginator 表格分页 问题

当第一次查询返回list列表,分页1,2,3.。。。。这是选择2,当前页面停留在第2页。 当再次查询后,因为使用的ajax,结果更新了,但当前页面依旧是第2页。 可以在jsf页面,datatable的控件中用binding直接将控件绑定到后台页面。然后查询的时候,在后台页面重置datatable到第一页。 1) xhtml中 <p:dataTable id="tbl" var="r...

weixin_30682127的博客 155

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

分页标签遭遇 "java.lang.ArithmeticException: / by zero"

近期在做一个利用jsf前台展示的项目,使用了x:dataTable展示数据,使用x:dataScroller来分页,运行时却遭遇了如下的exception:class java.lang.ArithmeticException:/ by zerojava.lang.ArithmeticException: / by zero at org.apache.myfaces.custom.d

chenzeyuan的专栏 2934

JSF primefaces dataTable表格分页问题

  在使用&lt;p:dataTable /&gt;标签开发JSF页面时,若出现页面分页后,点击页码没反应,有可能是因为点击触发查询或删除操作后没有刷新表格;若出现重新加载数据,刷新表格后,页码总是停留在之前点击过的页码上,就需要调用下面这段代码把页码重置:   &lt;script type="text/javascript"&gt; function resetDat...

Just Do It 498

一次和jsf的接触

同事看了richfaces,觉得很漂亮,决定来一次学习研究.要搞jsf,当然要收集资料啦.开动,加上两年前接触过一会jsf,一下子就收集了下面如此之多的链接: jsf richfaces ajax4jsf RichFaces Developer Guide seam MyFa...

nihongye 147

JSF页面报错:Caused by: org.richfaces.component.EnclosingFormRequiredException: class org.richfaces.compo

JSF页面报错: org.richfaces.component.EnclosingFormRequiredException: class org.richfaces.component.html.HtmlDatascroller (id="j_id_jsp_1816559699_88pc4") did not find parent form. 问题: 数据没有问题,页面没问题,但...

渴望飞的鱼的博客 271
上一篇: JSF(MyFaces2.x)整合Ajax(RichFaces3.3.x)
下一篇: java 多线程 wait() 以及 notirfy() 简析
Bryan_Chan
博客等级 码龄17年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值