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

页面代码非常简单,没有复杂性。 检查“ 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

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

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

相关文章

二分匹配之最大权值匹配算法---KM模板

百科&#xff1a;http://baike.baidu.com/link?urlvbM3H4XmfrsWfP-epdlR2sVKSNzOq4hXnWDqm5uo8fd7VWsF2SmhDV35XyVUDvVjvrtf42RUITJuNCHn-7_x6K 大神总结&#xff1a;http://www.cnblogs.com/skyming/archive/2012/02/18/2356919.html 代码&#xff1a; 1 #include<stdio.h…

java实现报表_用存储过程和 JAVA 写报表数据源有什么弊端?

用存储过程和 JAVA 写报表数据源有什么弊端&#xff1f;跟着小编一起来一看一下吧&#xff01;我们在报表开发中经常会使用存储过程准备数据&#xff0c;存储过程支持分步计算&#xff0c;可以实现非常复杂的计算逻辑&#xff0c;为报表开发带来便利。所以&#xff0c;报表开发…

SpringMVC学习笔记整理

SpringMVC学习笔记 以下是我整理的SpringMVC学习笔记&#xff1a; 导入jar包 一&#xff1a;springmvc工作流程。 ①. servlet容器初始化一个request请求 ②. DispatcherServlet分发器负责发送请求到映射器. ③. despatcherServlet把请求交给处理器映射Mapping&…

Java EE重新审视设计模式:异步

尽管您可能找不到作为设计模式列出的异步方法调用&#xff0c;但我还是值得一提。 因此&#xff0c;这是我的JavaEE Revisits设计模式系列的最后一篇文章。 异步方法调用只不过是多线程。 基本上&#xff0c;它是指将在单独的线程中运行的方法调用&#xff0c;因此主&#xff0…

am335x watchdog

am335x watchdog 内核文档kernel/Documentation/watchdog Qtaplex:~/kernel/7109/linux-3.2.0/Documentation/watchdog$ ll total 88 drwxrwxr-x 3 Qt Qt 4096 Jun 8 15:11 ./ drwxrwxr-x 94 Qt Qt 12288 Apr 28 13:09 ../ -rwxrwxr-x 1 Qt Qt 576 Nov 20 2013 00-INDEX -rwxrw…

springboot2 使用hikaridatasource 并测试_基于Spring Boot 2.x的后端管理网站脚手,源码免费分享...

基于Spring Boot 2.x 的 Material Design 的后端管理网站脚手架 &#xff1a;提供权限认证 用户管理 菜单管理 操作日志 等常用功能去繁就简 重新出发基于Spring Boot 集成一些常用的功能&#xff0c;你只需要基于它做些简单的修改即可。功能列表&#xff1a;权限认证权限管理用…

测试驱动开发–双赢策略

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

设计模式学习(三)——装饰器模式

前言 距离上一次正儿八经地写随笔已经有一段时间了&#xff0c;虽然2月10号有一篇关于泛型的小记&#xff0c;但是其实只是简单地将自己的学习代码贴上来&#xff0c;为了方便后续使用时查阅&#xff0c;并没有多少文字和理解感悟。之所以在今天觉得有必要写点东西&#xff0c;…

swift - 导航栏设置

话不多&#xff0c;直接贴代码&#xff1a; let nav UINavigationController.init(rootViewController: viewController) nav.topViewController?.title title// 设置导航栏的标题 nav.navigationBar.tintColor .whiteColor()// 设置push出的导航栏的返回颜色(箭头及文字) …

mysql5.6主从复制(读写分离)方案_MySQL5.6主从复制(读写分离)方案

MySQL5.6主从复制(读写分离)方案一、前言&#xff1a;为什么MySQL要做主从复制(读写分离)&#xff1f;通俗来讲&#xff0c;如果对数据库的读和写都在同一个数据库服务器中操作&#xff0c;业务系统性能会降低。为了提升业务系统性能&#xff0c;优化用户体验&#xff0c;可以通…

在实践中使用延迟队列

通常&#xff0c;在某些情况下&#xff0c;当您有某种工作或作业队列时&#xff0c;有必要不立即处理每个工作项或作业&#xff0c;而是要延迟一些时间。 例如&#xff0c;如果用户单击一个按钮来触发要完成的某项工作&#xff0c;而一秒钟后&#xff0c;用户意识到他/她错了&a…

PCL学习八叉树

建立空间索引在点云数据处理中有着广泛的应用&#xff0c;常见的空间索引一般 是自顶而下逐级划分空间的各种空间索引结构&#xff0c;比较有代表性的包括BSP树&#xff0c;KD树&#xff0c;KDB树&#xff0c;R树&#xff0c;四叉树&#xff0c;八叉树等索引结构&#xff0c;而…

Android实现自定义带文字和图片的Button

在Android开发中经常会需要用到带文字和图片的button&#xff0c;下面来讲解一下常用的实现办法。 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现&#xff0c;这种方式代码量最小。在Button的属性中有一个是drawableLeft&#xff0c;这个 属性可以…

mysql语句中的注释方法_MySQL语句注释方式简介

MySQL支持三种注释方式&#xff1a;1.从‘#字符从行尾。2.从‘-- 序列到行尾。请注意‘-- (双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格、tab、换行符等等)。3.从/*序列到后面的*/序列。结束序列不一定在同一行中&#xff0c;因此该语法允许注释跨越多行。…

aqlserver实用程序_sqlserver命令提示实用工具的介绍

除上述的图形化管理工具外&#xff0c;SQL Server2008还提供了大量的命令行实用工具&#xff0c;包括bcp、dtexec、dtutil、osql、reconfig、sqlcmd、sqlwb和tablediff等&#xff0c;下面进行简要说明。dtexec实用工具用于配置和执行SQL Server2008 Intgration Services包。用户…

使用Java和Scala将Play Framework 2应用程序部署到Openshift

几个星期&#xff0c; 马克阿特伍德 &#xff08; Mark Atwood&#xff09; &#xff0c; 豪尔赫阿里斯 &#xff08; Jorge Aliss &#xff09;和我塞巴斯蒂安 斯卡塔诺 &#xff08; SebastinScarano&#xff09;参加了红帽网络研讨会LETS PLAY&#xff01; 在云端&#xff1…

LintCode 387: Smallest Difference

LintCode 387: Smallest Difference 题目描述 给定两个整数数组&#xff08;第一个是数组A&#xff0c;第二个是数组B&#xff09;&#xff0c;在数组A中取A[i]&#xff0c;数组B中取B[j]&#xff0c;A[i]和B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。 样例 给定数组A …

android框架----下沉文字Titanic的使用

Titanic is a simple illusion obtained by applying an animated translation on the TextView TextPaint Shaders matrix. Titanic的使用 Titanic的使用&#xff0c;项目结构如下&#xff1a; 一、下载Titanic并且部署到项目中 Titanic的项目地址&#xff1a; https://github…

linux 自动安装mysql_Linux安装mysql

一、下载这里我创建了一目录software用于存放我们待会要下载的mysql包&#xff0c;先去到该目录命令&#xff1a;cd /software命令&#xff1a;wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar下载完成后&#xff0c;你会在software这个…

Quartz Scheduler插件–隐藏的宝藏

尽管在官方文档中进行了简要描述&#xff0c;但我相信Quartz插件了解得还不够多&#xff0c;看看它们有多有用。 本质上&#xff0c;Quartz中的插件是方便的类&#xff0c;用于包装基础侦听器的注册。 您可以自由编写自己的插件&#xff0c;但我们将专注于Quartz随附的现有插件…