`
can4you
  • 浏览: 101804 次
  • 性别: Icon_minigender_1
  • 来自: 天朝
社区版块
存档分类
最新评论

JSF 分页方案

    博客分类:
  • 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)使用一组dataTabledataScroller标签,其中dataTable必须指定idrows(当然还有value

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

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

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

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

 

 

 

二、方案二

 

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

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

3.     DataModel 是一个抽象类,用于封装各种类型的数据源和数据对象的访问,JSFdataTable中绑定的数据实际上被包装成了一个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)因为此方案dataTablevalue值是绑定一个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分页控件 ,支持大容量可查询分页

    在JavaServer Faces (JSF) 应用程序中,分页是提高用户体验和优化性能的重要技术,特别是当处理大量数据时。...在实际项目中,开发者应结合具体需求选择合适的JSF分页解决方案,并充分考虑性能和用户体验。

    jsf 分页

    以PrimeFaces为例,其`p:datascroller`组件是一个强大的分页解决方案。首先,我们需要在JSF页面中引入PrimeFaces库,并在XHTML文件中添加`p:datascroller`组件。这个组件通常与`p:dataTable`配合使用,后者用于显示...

    JSF经典的js分页

    通过分析PageDemo的源代码,我们可以深入学习如何将这些步骤具体实施,从而在自己的项目中复用或改进这个分页方案。 总之,"JSF经典的js分页"是一个关于如何在JSF环境中利用JavaScript实现客户端分页的实例。它强调...

    jsf自带分页

    对于标签“源码”和“工具”,可能意味着博客作者深入解析了JSF分页的相关源码,并且提供了一些实用工具或库来简化分页实现。 在阅读这样的博客后,开发者可以更好地理解JSF的分页机制,提升他们在实际项目中的应用...

    JSF中自定义分页呈现器(Render)的实现和应用

    ### JSF中自定义分页呈现器的实现与应用 #### 概述 JavaServer Faces(简称JSF)作为一项强大的Web应用开发框架,为Java开发者...对于那些需要频繁进行分页查询的应用场景而言,这是一个非常实用且高效的解决方案。

    jsf +jdbc+spring实现的增设改查,分页,导入数据。导出数据、日志

    在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,而JDBC(Java Database Connectivity)是Java中与数据库交互的标准API,Spring框架则是一个全面的后端开发解决方案,包含了依赖...

    JSF 一些经验 .doc

    然而,该组件存在一些不足之处,例如难以实现特定行样式的自定义显示、回退按钮的风险管理以及数据库分页的优雅解决方案。这些挑战往往会消耗开发者大量的时间和精力。 幸运的是,JSF 1.2 引入了统一的 EL 表达式...

    jsf+ibatis增删改查

    8. **分页和模糊查询**:对于大量的用户数据,可以实现分页显示,通过JSF的`p:paginator`组件配合后端分页逻辑。模糊查询通常涉及SQL的`LIKE`操作,可以在iBatis的映射文件中配置,然后在JSF页面提供搜索框,将输入...

    CDI , JSF2.0 项目兼容性问题总结

    以上这些问题和解决方案都是在实践中积累的经验,对于CDI+JSF2.0项目在WebSphere 8.5环境下的部署和运行至关重要。理解和解决这些问题有助于提高应用的稳定性和用户体验。在实际开发中,应持续关注官方文档、社区...

    利用eXtremeComponents标签来实现分页实例

    总之,eXtremeComponents的`xe:pager`标签为Java Web开发者提供了一个简单且强大的分页解决方案。通过合理配置和绑定数据源,我们可以快速实现一个功能完善的分页系统。在实际开发中,可以根据项目需求进行定制,以...

    很方便的分页,主要用标签实现

    而标签实现的分页可能是指使用自定义标签库,例如Java的JSTL(JavaServer Pages Standard Tag Library)中的`&lt;c:forEach&gt;`或JSF(JavaServer Faces)的UI组件,或者是前端框架如React、Vue或Angular中的自定义组件。...

    MyFaces Oracle大数据表分页封装.docx

    总结来说,这个文档提供的分页封装方案通过`DataPage`和`PagedListDataModel`实现了对Oracle大数据表的分页处理,使得在JSF应用中可以高效地展示和操作大数据集。同时,需要注意优化查询策略以避免重复查询,提升...

    JSF is import

    - **分页与Caching**:JSF支持数据的分页显示,同时利用缓存机制提高页面加载速度和性能。 - **定制错误信息**:开发者可以自定义错误信息,提升用户体验,使其更具人性化。 ##### JSF的优越性 JSF最大的优点在于...

    j2ee joone 技术论文

    因此,文档提出了一种解决方案——在JSF框架中实现数据表控件的分页功能,以此减少服务器端资源消耗和网络传输数据量,提高客户端响应速度。 #### 三、JSF框架简介 ##### 1. JSF框架特点 - **组件为中心的UI构建*...

    JasperReports JSF Plugin-开源

    **JasperReports JSF Plugin** 是一个开源项目,专门设计用于增强JavaServer Faces(JSF)应用程序的功能。...如果你正在寻找一个强大的报表解决方案,JasperReports JSF Plugin无疑是一个值得考虑的选项。

    tomhawk1.1.6.jar

    Tomhawk 1.1.6提供了强大的分页解决方案,允许开发者自定义每页显示的记录数,以及轻松实现前后页切换。此外,它还支持动态加载数据,减少了页面加载时间,提高了用户体验。 3. **自定义组件** Tomhawk不仅仅局限...

    基于seam的datatable全选解决方案

    在Seam框架下,DataTable是一个常用的数据展示组件,它可以展示大量数据并支持各种交互操作,如排序、分页和选择。本文将深入探讨一个基于Seam的DataTable全选解决方案,以帮助开发者更高效地处理用户选择数据的需求...

    pager-taglib-2.0.rar

    **标题解析:**"pager-taglib-2.0.rar" 这个文件名...通过以上的分析和解释,我们可以了解到pager-taglib是一个强大且灵活的分页解决方案,无论是在已有框架的项目中还是独立使用,都能提供高效且易于实现的分页功能。

    pager-taglib-ra2.0

    总的来说,pager-taglib-ra2.0是一个专为J2EE应用设计的分页解决方案,提供了一套便捷的标签接口,简化了开发者在处理大量数据时的前端分页工作。通过阅读尼克技术博客的文章,开发者可以更深入地了解如何在实际项目...

Global site tag (gtag.js) - Google Analytics