`
yourenyouyu2008
  • 浏览: 286936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分页解决方案

    博客分类:
  • seam
阅读更多

分页有两种情况,一种是将数据一次全部读取,然后再内存中分页;另一种是每次只获取一页的内容。这两种情况都应当在系统中用到,但他们对应的情况不同。一次全部读取的适用于小数据量,比如一个订单下的全部订单明细;而分页查询的情况适用于顶层对象的不同查询条件下的列表,比如全部订单列表。

内存分页

由标准分页组件来实现,比如rich:datascroller,它的明显优点是和要分页的内容是分离的。

 

这种情况特别适用于hibernatejpa等支持的实体的列表属性,比如一个订单的全部订单明细,当我们获取一个订单时,其实它的全部明细已经被获取(可能是延迟加载), 然后由分页组件来分页显示

<a:region>

<h:dataTable width="483" id="carList" rows="1" columnClasses="col"

              value="#{dataTableScrollerBean.allCars}" var="category">

              <f:facet name="header">

                  <rich:columnGroup>

                     <h:column>

                         <h:outputText styleClass="headerText" value="Make" />

                     </h:column>

                  </rich:columnGroup>

              </f:facet>

 

              <h:column>

                  <h:inputText value="#{category.make}" />

              </h:column>

           </h:dataTable>

           <rich:spacer height="30" />

           <rich:datascroller align="left" ajaxSingle="false" for="carList" ajaxSingle="false" maxPages="20" />

  </a:region>

还有一种情形非常普遍,那就是分页且带编辑,就是说可以分页批量修改订单明细的内容,然后一起更新到数据库,这需要在内存中保存住该列表,最普通的做法是放入session中,而seam给出了一种更好的解决方案:对话,利用了session存放数据的功能,而又能及时清除session(不需要手工维护session)。当点击分页操作时,会将页面上列表中的输入框中的内容更新到对应的后台list中,最终保存时将整个list保存即可。

问题:当<rich:datascroller ajaxSingle="false"不为false时不会执行table中输入组件的解码,也就不会将页面的输入值更新到list中,在外面加上a:region表明这提交这个区域里的组件,这样外面的输入框就不会执行验证了。

查询分页

查询分页目前我还见过有支持的组件,这种分页需要处理两方面的任务,1)获取分页数据

2)页面显示分页控制

我目前知道的比较好的方法是seam提供的query框架,详见seam文档。

做点补从:

seam的query框架的后台部分已经是相当完善了,缺乏的是分页的页面展现,我们简单的将分页封装成一个组件,这样所有使用分页的页面都可以简单的引用了。

分页组件

文件名:/template/page.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:s="http://jboss.com/products/seam/taglib"
      xmlns:rich="http://richfaces.org/rich"     
      >
<ui:composition>
 <h:commandLink view="#{linkurl}" rendered="#{searchbean.previousExists}" value="首页">
    <f:param name="firstResult" value="0"/>
</h:commandLink>
&#160;
<h:commandLink view="#{linkurl}" rendered="#{searchbean.previousExists}" value="上一页">
    <f:param name="firstResult" value="#{searchbean.previousFirstResult}"/>
</h:commandLink>
&#160;
<h:commandLink view="#{linkurl}" rendered="#{searchbean.nextExists}" value="下一页">
    <f:param name="firstResult" value="#{searchbean.nextFirstResult}"/>
</h:commandLink>
&#160;
<h:commandLink view="#{linkurl}" rendered="#{searchbean.nextExists}" value="未页">
    <f:param name="firstResult" value="#{searchbean.lastFirstResult}"/>
</h:commandLink>
&#160;
共#{searchbean.resultCount}条记录,共#{searchbean.pageCount}页,每页#{searchbean.maxResults}条,当前第
<h:outputText value="#{searchbean.firstResult/searchbean.maxResults+1}">
<f:convertNumber integerOnly="true"/>
</h:outputText>

</ui:composition>
</html>

使用分页组件

<h:dataTble>

..........

</h:dataTable>

<!--分页组件-->

<ui:include src="/template/page.xhtml">
 <ui:param name="searchbean" value="#{jsys_search}"/><!--query ->
 <ui:param name="linkurl" value="/transfer/transferBrowseList.xhtml"/><!--本页面-->
</ui:include>

3
0
分享到:
评论
1 楼 angelox 2008-05-30  
推荐看看Jmesa,这个table组件也很不错。分页、过滤、排序、编辑、导出全部搞定,扩展性也不错。小数据可以一次全取出,简化编程。为了效率,还可以使用Limit特性。既可以使用JSP标签,也能直接用API编写。

相关推荐

    海量数据分页解决方案_demo

    "海量数据分页解决方案"就是为了应对这个问题而提出的。在这个demo中,我们主要关注的是如何利用存储过程来实现高效、通用的数据分页功能。 首先,我们需要理解数据分页的重要性。在网页或应用中,一次性加载所有...

    SSM分页解决方案-Bootstrap

    SSM分页解决方案是Web开发中常见的需求,它涉及到SpringMVC、Bootstrap和Mybatis这三个核心技术。本解决方案提供了一个完整的框架,使得开发者可以方便地在Web应用中实现数据的分页展示。 首先,SpringMVC作为Java ...

    SSM分页解决方案-easyui

    SSM分页解决方案基于SpringMVC、Mybatis和EasyUI框架,这三者结合能够构建出功能强大且用户友好的Web应用。以下是关于这个主题的详细讲解。 **SpringMVC** 是Spring框架的一个模块,主要负责处理Web请求。它提供了...

    jQuery左右分页解决方案.rar

    jQuery左右分页解决方案.rarjQuery左右分页解决方案.rarjQuery左右分页解决方案.rarjQuery左右分页解决方案.rarjQuery左右分页解决方案.rarjQuery左右分页解决方案.rar

    jQuery左右分页解决方案

    通过学习和理解这个"jQuery左右分页解决方案",开发者不仅可以掌握如何在网页中实现分页效果,还能进一步了解jQuery的事件处理、DOM操作、样式应用和浏览器兼容性处理等关键技巧。同时,这个案例也鼓励我们思考如何...

    Struts+Spring+Hibernate通用分页解决方案

    "Struts+Spring+Hibernate通用分页解决方案"是针对基于这三大框架(Struts、Spring、Hibernate)的Java Web应用所设计的一种高效且可复用的分页策略。以下是关于这个主题的详细解释: 1. **Struts框架**:Struts是...

    分页解决方案之数据访问函数库.docx

    在本文档中,作者分享了一个非传统的数据访问函数库的实现方法,用于处理数据库的分页解决方案。这个函数库并非静态的,需要先通过`DALFactory.CreateDAL()`进行实例化。以下是这个数据访问函数库的主要功能和使用...

    常用sql分页解决方案

    本资源“常用sql分页解决方案”提供了三种不同的分页方法,旨在帮助开发者更高效地实现数据检索。 一、LIMIT与OFFSET方法(MySQL) 在MySQL中,最常用的分页查询方式是使用`LIMIT`和`OFFSET`关键字。`LIMIT`用于...

    ios-HGSegmentedPageViewController-分页解决方案.zip

    github: https://github.com/ArchLL/HGSegmentedPageViewController 分页解决方案,支持cocoapods快速引入,支持自定义样式,后续计划增加更多分页样式

    项目分页代码 分页问题解决实例 分页解决方案

    解决项目分页问题的经典实例 帮您解决让人头疼的分页

    ASP.NET MVCPager 分页解决方案

    `MvcPager`是一款专为ASP.NET MVC设计的高效、易用的分页控件,它提供了一种简单的方式实现分页功能。 `MvcPager`的主要优点包括: 1. **异步分页**:MvcPager支持AJAX分页,这意味着用户可以在不刷新整个页面的...

    jsp仿百度、谷歌分页解决分页太多,始终显示一部分的页码

    本文将深入探讨如何使用JavaScript和jQuery实现一个类似百度、谷歌的智能分页解决方案,解决分页数量过多导致用户界面拥挤的问题。 首先,我们需要理解分页的基本原理。分页通常涉及到两个关键参数:每页显示的条目...

    MySQL高效分页解决方案集分享

    MySQL高效分页解决方案是数据库管理中的重要议题,特别是在大数据量的场景下,传统的LIMIT与OFFSET方法在处理分页时性能会显著下降。本文主要探讨了三种优化MySQL分页查询的方法,旨在提高查询效率。 首先,最基本...

    Java架构直通车——ElasticSearch深度分页解决方案

    **Java架构直通车——ElasticSearch深度分页解决方案** 在Java开发中,Elasticsearch作为一款强大的全文搜索引擎,常被用于海量数据的检索。然而,在处理分页查询时,特别是深度分页,会遇到一些挑战。本文将探讨...

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    SQL中分页解决方案

    ### SQL中的分页解决方案 在数据库管理中,分页是一种常用的技术手段,它能有效地处理大量数据的查询结果,提高用户体验。本篇文章将详细介绍在三种主流数据库系统:Oracle、SQL Server 和 MySQL 中如何实现分页...

    pageHelper分页失效解决方案.docx

    pageHelper 分页失效解决方案 PageHelper 是一款优秀的 MyBatis 分页插件,它可以非常便利的使用,使开发效率得到很大的提升。但是,在使用 PageHelper 进行分页查询时,会出现一些问题,例如当进行一对多结果映射...

Global site tag (gtag.js) - Google Analytics