代码之家  ›  专栏  ›  技术社区  ›  Alex Argo

如何在javaserver faces中分页列表?

  •  4
  • Alex Argo  · 技术社区  · 16 年前

    我有一个 JSF 我正在转换为使用webservices而不是直接的数据库查询的应用程序。有一些非常长的列表 之前 可以通过简单的sql查询轻松返回。我想知道如何使用jsf/web服务实现分页。有没有一个好的网页服务设计模式?

    如果重要的话,我正在使用 Apache MyFaces 使用tomahawk扩展(myfaces开发团队在捐赠给apache之前创建的一组jsf组件)引用jsf实现。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Sietse    16 年前

    我喜欢Seam的查询对象: http://docs.jboss.com/seam/2.1.0.BETA1/reference/en-US/html_single/#d0e7527

    它们基本上抽象了JSF可以很容易地使用的SEAM组件中的所有SQL/JPA。

    如果不想使用seam和/或jpa,可以实现类似的模式。

        2
  •  2
  •   Peter Hilton    16 年前

    Trinidad 具有支持分页的表组件,这可能会有所帮助。它并不理想,但对Seam的使用效果很好,如Pete Muir所述 Backing Trinidad's dataTable with Seam 博客帖子。

    如果找不到喜欢的jsf组件,则需要编写自己的逻辑来设置 限制 抵消 在您的ejb-ql(jpa)查询中。

        3
  •  2
  •   user7094    16 年前

    这取决于您要进行客户端还是服务器端分页。如果是服务器端,则web服务必须包含两个附加参数(例如“startfrom”和“pagesize”),这些参数将允许您指定要检索的数据的“页面”。您的服务可能还需要返回总结果大小,这样您就可以生成分页控件。

    如果你决定太多的努力,你可以在你的后台bean中进行客户端分页(或者得到一个组件来为你做),但是如果你说的是数以千计的对象,它是不推荐的!

        4
  •  2
  •   Peter Mortensen icecrime    15 年前

    我们使用了richfaces库数据表: http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=usage

    很简单,如果你还没有使用richfaces,那么 真正地 很容易和我的脸结合。

        5
  •  1
  •   Evgeny    16 年前

    如果您立即从WebService获得所有结果,并且不能将分页包含到实际Web服务调用中,则可以尝试将项目列表设置为托管bean的属性。然后,可以将它挂钩到ToaAHAOK DATABATE的“值”属性:

    http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataTable.html

    然后,您可以使用ToaAHAOK DATAXROLL对存储在该属性中的项目列表进行分页。下面是该组件的引用,它与datatable组件配合得很好:

    http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataScroller.html

    你可以把它包含在DATABLE的页眉/页脚小面中,或者作为一个单独的复合体(你需要在DATAcLoad的''O'属性中指定DATABATE的ID)。

    使用DATABLE可以对每一行进行排序和切换细节,但是可以在基本分页工作之后实现。

    希望能有帮助!