primefaces

页面代码非常简单,没有复杂性。 检查“ 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都会调用此方法。 它将具有有效值的所有参数; 使用这些参数,您将能够在数据库中进行查询,仅获取所需的数据。 如果要按字段对查询排序,则可以使用具有字段datatable值的sortField属性(如果用户不进行排序,则为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

primefaces

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

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

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

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

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

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

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

  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. 魅族建立基于M8的Android开源项目
  2. 大型网站技术架构小结
  3. AutoML 在表数据中的研究与应用
  4. 自己动手写CPU(1)五级流水线及CPU第一条指令ori
  5. 小谈@override
  6. Mysql中的IFNULL函数的详解(嵌套查询等重点)如果第一个为空就执行第二个
  7. 信息传输计算机服务业,信息传输软件和信息技术服务业包括哪些
  8. 【算法】第76题 Minimum Window Substring
  9. 测试通达信指标胜率的软件,如何利用通达信程序交易评测系统选高胜率小回辙高收益股票...
  10. Excel中批量生成复选框,带计算功能。品质管理、调查表常用工具
  11. 平方矩阵 II--C++ 经典解析版-----编程/算法/数据结构
  12. ios 自己服务器 苹果支付_修复苹果IOS支付
  13. 物联网案例研究:确保格兰仕智能设备不易受黑客攻击
  14. java里异常名词解释_java名词解释
  15. Linkedin被“豪吞”,是互联网时代垄断者的网络效应
  16. micropython是什么意思_MicroPython 是什么?
  17. H3C防火墙端口开启二层模式,网络不通的解决方法
  18. Linux centOS学习笔记(文件处理命令)
  19. nacosk8s部署_在K8S中部署Nacos配置中心
  20. 异步电机模型预测磁链控制(MPFC)

热门文章

  1. TreeSet的null值与元素类型的约束
  2. java中,如何实现输入一个正整数,并将这个数字反转输出,比如输入123,输出321
  3. 《四世同堂》金句摘抄(十六)
  4. 看了通信领域中信息的处理的三种方式我终于知道电报能发送信息的原理了
  5. 双向链表的(CRUD)
  6. SpringCloud Config 分布式配置
  7. mysql group和order_mysql 用 group by 和 order by同时使用
  8. mysql体系结构和存储引擎
  9. MySQL的source命令不加分号和delimiter的使用
  10. payara 创建 集群_高可用性(HA),会话复制,多VM Payara群集