页面代码非常简单,没有复杂性。 检查“ index.xhtml”代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body><f:view><h:form><p:dataTable id="lazyDataTable" value="#{playerMB.allPlayers}" var="player" paginator="true" rows="10"selection="#{playerMB.player}" selectionMode="single"paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"rowsPerPageTemplate="5,10,15" style="width: 80%;margin-left: 10%;margin-right: 10%;"><p:ajax event="rowSelect" update=":playerDialogForm" oncomplete="playerDetails.show()" /><p:column><f:facet name="header">Name</f:facet><h:outputText value="#{player.name}" /></p:column><p:column><f:facet name="header">Age</f:facet><h:outputText value="#{player.age}" /></p:column></p:dataTable></h:form><p:dialog widgetVar="playerDetails" header="Player" modal="true"><h:form id="playerDialogForm"><h:panelGrid columns="2"><h:outputText value="Id: " /><h:outputText value="#{playerMB.player.id}" /><h:outputText value="Name: " /><h:outputText value="#{playerMB.player.name}" /><h:outputText value="Age: " /><h:outputText value="#{playerMB.player.age}" /></h:panelGrid></h:form></p:dialog></f:view>
</h:body>
</html>

我们得到了一个懒惰的数据表,它将在对话框中显示选定的值。

在我们的Managed Bean中,我们有比页面更简单的代码:

package com.mb;import java.io.Serializable;import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;import org.primefaces.model.LazyDataModel;import com.model.Player;@ViewScoped
@ManagedBean
public class PlayerMB implements Serializable {private static final long serialVersionUID = 1L;private LazyDataModel<Player> players = null;private Player player;public LazyDataModel<Player> getAllPlayers() {if (players == null) {players = new PlayerLazyList();}return players;}public Player getPlayer() {if(player == null){player = new Player();}return player;}public void setPlayer(Player player) {this.player = player;}
}

我们对播放器实体进行了获取/设置,对LazyDataModel类型的对象进行了获取。
在下面检查PlayerLazyList代码的实现

package com.mb;import java.util.List;
import java.util.Map;import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;import com.connection.MyTransaction;
import com.dao.PlayerDAO;
import com.model.Player;public class PlayerLazyList extends LazyDataModel<Player> {private static final long serialVersionUID = 1L;private List<Player> players;private MyTransaction transaction;private PlayerDAO playerDAO;@Overridepublic List<Player> load(int startingAt, int maxPerPage, String sortField, SortOrder sortOrder, Map<String, String> filters) {try {try {transaction = MyTransaction.getNewTransaction();playerDAO =  new PlayerDAO(transaction);transaction.begin();// with datatable pagination limitsplayers = playerDAO.findPlayers(startingAt, maxPerPage);// If there is no player created yet, we will create 100!!if (players == null || players.isEmpty()) {playerDAO.create100Players();// we will do the research again to get the created playersplayers = playerDAO.findPlayers(startingAt, maxPerPage);}} finally {transaction.commit();}} catch (Exception e) {e.printStackTrace();}// set the total of playersif(getRowCount() <= 0){setRowCount(playerDAO.countPlayersTotal());}// set the page dizesetPageSize(maxPerPage);return players;}@Overridepublic Object getRowKey(Player player) {return player.getId();}@Overridepublic Player getRowData(String playerId) {Integer id = Integer.valueOf(playerId);for (Player player : players) {if(id.equals(player.getId())){return player;}}return null;}
}

关于上面的代码:

  • 加载方法:每次启动分页时,Primefaces都会调用此方法。 它将具有有效值的所有参数; 使用这些参数,您将能够在数据库中进行查询,仅获取所需的数据。 如果要按字段对查询排序,则可以使用sortField属性,该属性将具有列datatable值(如果用户不进行排序,则为null); sortOrder将指示用户是否要递增或递减。
  • getRowKey方法:此方法向每行返回一个ID,Primefaces将在需要时调用此方法。
  • getRowData方法:将在数据表中返回选定的Player。
  • 首次运行此应用程序时,它将在数据库中保留100个播放器。 在实际应用中,这不是必需的。

最后一个配置需要添加到“ web.xml”文件中:

<persistence-context-ref><persistence-context-ref-name>JSFPU</persistence-context-ref-name><persistence-unit-name>JSFPU</persistence-unit-name>
</persistence-context-ref>

我们将使用此配置来执行JNDI查找。

运行我们的应用程序

现在我们只需要启动应用程序。

要访问该应用程序,您可以使用链接:

http:// localhost:8080 / DatatableLazyPrimefaces /

单击此处下载此帖子的源代码。

参考: uaiHebert博客上我们JCG合作伙伴 Hebert Coelho的懒惰JSF数据表分页(Primefaces) 。

翻译自: https://www.javacodegeeks.com/2012/04/lazy-jsf-primefaces-datatable_11.html

懒惰的JSF Primefaces数据表分页–第2部分相关推荐

  1. primefaces_懒惰的JSF Primefaces数据表分页–第1部分

    primefaces 今天,我们将使用带有视图范围的托管bean的惰性列表进行JSF数据表分页. 这些单词/表达是什么意思? 如今,有几个JSF框架可为数据表提供现成的分页,列排序器和其他功能. 今天 ...

  2. primefaces_懒惰的JSF Primefaces数据表分页–第2部分

    primefaces 页面代码非常简单,没有复杂性. 检查" index.xhtml"代码: <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  3. 懒惰的JSF Primefaces数据表分页–第1部分

    今天,我们将使用带有视图范围的托管bean的惰性列表进行JSF数据表分页. 这些单词/表达式是什么意思? 如今,有几个JSF框架为数据表提供现成的分页,列排序器和其他功能. 今天,我们将使用Prime ...

  4. java jsf table_JSF数据表(h:dataTable)排序数据

    JSF中有一个叫作DataTable的控件,可用来渲染和格式化html表格.使用DataTable,我们可以迭代收集或数组数组来显示数据.下面我们来学习如何向DataTable排序数据. 要使用Dat ...

  5. web.xml.jsf_使用JSF 2.2功能来开发可滚动,可延迟加载的Ajax数据表

    web.xml.jsf 这次,我想与您分享我最近从JSF 2.2功能中学到的知识. 为此,我决定创建一个简单的ajax,可滚动,延迟加载的数据表. 请注意, 绝不这是相当大的库如Primefaces ...

  6. 使用JSF 2.2功能来开发可滚动,可延迟加载的Ajax数据表

    这次,我想与您分享我最近从JSF 2.2功能中学到的知识. 为此,我决定创建一个简单的ajax,可滚动的延迟加载数据表. 请注意, 绝不这是相当大的库如Primefaces , RichFaces的或 ...

  7. C#.NET 通用权限管理系统组件 大数据多表分页获取部分列的参考方法

    往往我们开发各种信息系统的时候,不只是简单的从一个表读取数据,很可能是从多个表读取数据后,把结果展示在界面上,当遇到2个大表关联时,若技术上没进行一些处理,那分页显示时速度会非常糟糕,在通用权限管理系 ...

  8. MySQL排序ORDER BY与分页LIMIT,SQL,减少数据表的网络传输量,完整详细可收藏

    文章目录 1.ORDER BY排序 2.LIMIT分页 1.ORDER BY排序 1.1 排序规则 使用 ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend):降序 ...

  9. java服务器端分页_使用数据表的服务器端分页

    服务器每页返回15条记录,总记录超过2000条 . 我想显示前15条记录,然后每次单击"下一步"按钮,显示剩余的所有记录(每页15条记录) . 为此,我们做服务器端分页或客户端?? ...

最新文章

  1. 5 个 APP 自动化测试辅助定位工具,你用过几个?
  2. 服务器支持热部署吗,热部署
  3. C#的同步和异步调用方法
  4. vscode中experimentaldecorators报错
  5. LeetCode 287. 寻找重复数(BitMap)
  6. android布局添加布局,Android中添加布局和初始化布局总结
  7. Linux /etc/rc.d 下面 rc${runlevel}.d rc.local init.d 区别
  8. cli能记日志web不能php,ThinkPHP6.0日志变化
  9. c语言和远光灯标志,常见的灯光语言有哪些 新手必须知道的车灯语言
  10. 用SVM分类模型处理iris数据集
  11. 学习3dmax游戏建模一定要美术基础很高吗?资深建模师一语道出重点
  12. 夏至海报设计素材,都分享在这里了
  13. 怎么修改PDF文件中的图片以及文字
  14. Windows Installer服务总是自动关闭导致无法安装在win10上安装英伟达显卡驱动的解决方案...
  15. 【一文学Linux系统基础操作】
  16. 36篇精品文章搞定所有TOEIC单词
  17. Python:enumerate函数
  18. 一. spring cloud gateway集成 spring cloud stream binder kafka,实现“动态路由“刷新与加载之采坑记录
  19. 计算机网络(九)——可靠传输协议
  20. 蓝桥杯比赛时间在什么时候_梨树什么时候去枝最佳时间?

热门文章

  1. 匿名内部类与Lambda表达式习题
  2. 抽象工厂模式设计模式_创新设计模式:抽象工厂模式
  3. javaone_JavaOne 2015 –提交技巧和建议
  4. Java 14:有用的NullPointerException消息
  5. java7和java8切换_仍不切换到Java 8的6个理由
  6. 集成spring mvc_向Spring MVC Web应用程序添加社交登录:集成测试
  7. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...
  8. Istio的网络API解释了
  9. JVM体系结构:JVM中的执行引擎
  10. Packt发行的$ 5 Java编程书籍:精通Java 9,Java 9 High Performance