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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

龙芯2h芯片不能进入pmon_“龙芯”18年:这个团队,终结了中国计算机产业的“无芯”历史...

近期在第二届数字中国建设峰会上展出的国产芯片龙芯3号。芯片是信息产业的灵魂&#xff0c;通用CPU(中央处理器)可以说是芯片中的“珠峰”。自主研发CPU&#xff0c;难度很大。在这个故事的起点&#xff0c;2001年8月的一个清晨&#xff0c;当龙芯第一代产品龙芯1号成功启动操作…

帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程

最近春哥仿站团队接到很多仿站客户订单&#xff0c;这里面有一个这样的功能&#xff0c;表单提交。今天花时间写个教程给大家。另外我们春哥仿站团队推出低价仿站业务&#xff0c;市面上99%的企业站点都能制作出来&#xff0c;有需要的联系我们。今天春哥团队华哥给大家讲解一下…

golang linux安装

go在linux下的安装&#xff1a; [rootlocalhost src]# wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz 速度还挺快的 [rootlocalhost src]# tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz 设置环境变量 [rootlocalhost src]# export PATH$PATH:…

java jsonobject 转对象_解析JSON中JSONObject的高级使用

文末会有读者福利简介:在程序开发过程中&#xff0c;在参数传递&#xff0c;函数返回值等方面&#xff0c;越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;同时也易于机器解析和生成、易于理解、阅读和撰写&#xff0c;而且Json采…

xfs支持oracle,让linux内核支持xfs文件系统

作/译者&#xff1a;叶金荣(Email:)&#xff0c;来源&#xff1a;http://imysql.cn&#xff0c;转载请注明作/译者和出处&#xff0c;并且不能用于商业用途&#xff0c;违者必究。 XFS 简介XFS 最初是由 Silicon Graphics&#xff0c;Inc. 于 90 年代初开发的。那时&#xff0c…

c语言打印菱形_没事了,搞一下C语言打印大小可变的菱形图案?

问题分析&#xff1a;菱形的大小size其实就是中间行中*号的个数&#xff0c;也是整个菱形的行数&#xff0c;其值必是奇数。问题的关键之一是如何确定每行中*号的个数。经过分析得知&#xff1a;当行i<(size1)/2时&#xff0c;该行的*号个数为n2*i-1&#xff0c;否则n2*&…

ListView 与 RecyclerView的创建与使用的异同

相同&#xff1a;1.在使用时&#xff0c;都需要先获取&#xff0c;再新建适配器&#xff0c;再用serAdapter方法绑定适配器 2.创建数据List&#xff0c;都是新建ArrayList 不同&#xff1a;1.在新建适配器类时&#xff0c;listview的适配器继承自ArrayAdapter,recyclerview的适…

测试驱动开发 测试前移_测试驱动开发–双赢策略

测试驱动开发 测试前移敏捷从业人员谈论测试驱动开发 &#xff08;TDD&#xff09;&#xff0c;所以许多关心代码质量和可操作性的开发人员也是如此。 我曾几何时&#xff0c;不久前设法阅读了有关TDD的文章。 据我了解&#xff0c;TDD的关键是&#xff1a; 编写测试&#xff0…

android timer后函数继续执行_Android内存异常机制(用户空间)_JE

常见的Android稳定性异常&#xff0c;有内核异常和Android层异常。内核异常也就是常说的“kernel panic”&#xff0c;简称KE异常&#xff1b;Android层异常又分为java层crash和Native层crash&#xff0c;简称JE、NE异常。此外&#xff0c;Android层异常还有应用ANR和system_Se…

oracle10 数据库审计,Oracle数据库审计用法实例

本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。ORACLE的审计可以从语句级、对象本节是从Oracle METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。ORACLE的审计可以从语句级、对象级和权限级几个…

cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)

来源:https://www.cnblogs.com/lulianqi/p/8167526.html这里的高性能指的就是网卡有多快请求发送就能有多快&#xff0c;基本上一般的服务器在一台客户端的压力下就会出现明显延时。该篇实际是介绍pipe管线的原理&#xff0c;下面主要通过其高性能的测试实践&#xff0c;解析背…

oracle 启用闪回数据库,如何启用Oracle10g闪回数据库特性

为什么80%的码农都做不了架构师&#xff1f;>>>1.确认当前模式SYS AS SYSDBA on 29-MAR-05 >select flashback_on from v$database;FLA---NO2.检查/修改恢复区设置SYS AS SYSDBA on 29-MAR-05 >show parameter db_recovery_file_destNAME TYPE VALUE-----------…

nvme通用驱动_对领域驱动设计的理解与实践

领域驱动设计(Domain-Driven-Design)是一种针对大型复杂系统的领域建模与分析方法论。2003 年&#xff0c;Eric Evans 发布《Domain-Driven Design: Tackling Complexity in the Heart of Software》(领域驱动设计&#xff1a;软件核心复杂性应对之道)&#xff0c;其中定义了DD…

为什么不应该用Stream forEach替换for循环的3个原因

太棒了&#xff01; 我们正在将代码库迁移到Java8。我们将用函数替换所有内容。 扔掉设计模式。 删除面向对象。 对&#xff01; 我们走吧&#xff01; 等一下 Java 8已经问世了一年多&#xff0c;而这种兴奋又回到了日常业务中。 baeldung.com从2015年5月开始执行的一项非代…

使用NPOI库导入导出EXCEL

一、EXCEL 导入&#xff08;Excel 导入导出实际项目中会被封装成**Helper 本示例只对简单功能做演示&#xff09; NPOI 包引用 视图view {ViewBag.Title "NPOIExcel"; }<h2>NPOIExcel</h2> <form action"Url.Action("NPOIInport", &…

oracle12c ora 12547,Oracle 12c DBCA出现PRCR-1079 ORA-12547 CRS-5017

Oracle 12c用dbca创建数据库时出现了PRCR-1079 ORA-12547 CRS-5017不能启动数据库。因为这里安装了Oracle Restart&#xff0c;所以尝试使用srvctl start database命令来手动启动数据库&#xff0c;但是结果还是一样不能启动。[gridoracle12c 12.1]$ srvctl start database -db…

kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类&#xff0c;然后确定聚类中心&#xff0c;或者直接生成k个中心。 3.对每个点确定其聚类中心点。 4.再计算其聚类新中心。 5.重复以上步骤直到满足收敛要求。&#xff08;通常就是确定的中心点不再改变。…

akka_Akka的字数统计MapReduce

akka在我与Akka的日常工作中&#xff0c;我最近写了一个字数映射减少示例。 本示例实现了Map Reduce模型&#xff0c;该模型非常适合横向扩展设计方法。 流 客户端系统&#xff08;FileReadActor&#xff09;读取文本文件&#xff0c;并将每一行文本作为消息发送给ClientActor…

Log4j 2配置与IntelliJ IDEA控制台颜色

Log4j是Java平台上最好的日志组件了&#xff0c;Log4j 2升级了不少API&#xff0c;拓展性更好。使用的话只需要直接引入就可以了. <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> &…

用c3p0连接oracle怎么分页,JSP分页(MySql+c3p0+dbutils)

JSP分页(MySqlc3p0dbutils)来源&#xff1a;互联网作者&#xff1a;佚名时间&#xff1a;2015-02-16 17:27为什么要对数据进行分页&#xff1f;当数据较多时&#xff0c;页面就会变的很庞大&#xff0c;不仅会影响到用户的使用&#xff0c;而且还有加重服务器的负担。下面简单的…