JSF2中DataTable的实现并没有提供分页实现,相比于JSF1.2中可用的richfaces等实现中的分页来说,JSF2可用的其它实现包并不多。参考网上一位同学的代码,并修改它的代码的bug,形成了这个新的代码。
界面代码:
<h:form>
<h:dataTable id="dt1" value="#{testPaginate.list}" binding="#{testPaginate.htmlDataTable}" border="1" var="item" rows="4" width="100%" headerClass="datagrid-header" >
<h:column>
<f:facet name="choose">
<h:outputText value="chosse" />
</f:facet>
//这里实现了多选功能或者单选功能的实现
<h:selectBooleanCheckbox >
<f:ajax listener="#{testPaginate.ajaxSelect}" execute="@this"></f:ajax>
</h:selectBooleanCheckbox>
<h:commandButton action="#{testPaginate.select}"></h:commandButton>
<h:outputText value="#{item.name}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="name" />
</f:facet>
<h:outputText value="#{item.name}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="user"/>
</f:facet>
<h:outputText value="#{item.user}"></h:outputText>
</h:column>
</h:dataTable>
<h:outputText value="total:#{testPaginate.itemCount} "/>
<h:outputText value="per page:#{testPaginate.pageSize} "/>
<h:outputText value="total page:#{testPaginate.pageCount} "/>
<h:outputText value="current:#{testPaginate.pageIndex} "/>
//本来没有加ajax用来分页。后来发现这只对分页时第一页的selectonebooleancheckbox
//起作用。后来发现,如果不加render代码在commanbutton上面的话,使得提交后的界面的
//界面找不到majarra(firebug提示)。研究了半天(半碗水的水平,只能摸索着做了,呵
//呵),才解决
<f:ajax execute="@form" render="@form">
<h:commandButton value="firstpage" action="#{testPaginate.firstAction}" disabled="#{testPaginate.pageIndex == 1 || empty testPaginate.list}"/>
<h:commandButton value="prevpage" action="#{testPaginate.prevAction}" disabled="#{testPaginate.pageIndex == 1 || empty testPaginate.list}"/>
<h:commandButton value="nextpage" action="#{testPaginate.nextAction}" disabled="#{testPaginate.pageIndex == testPaginate.pageCount || empty testPaginate.list}"/>
<h:commandButton value="lastpage" action="#{testPaginate.lastAction}" disabled="#{testPaginate.pageIndex == testPaginate.pageCount || empty testPaginate.list}"/>
<h:commandButton value="load" action="#{testPaginate.doSomething}"/>
</f:ajax>
</h:form>
后台bean:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author liujg
*/
@ManagedBean
@SessionScoped
public class TestPaginate {
private HtmlDataTable htmlDataTable=new HtmlDataTable();
public HtmlDataTable getHtmlDataTable() {
return htmlDataTable;
}
public void setHtmlDataTable(HtmlDataTable htmlDataTable) {
this.htmlDataTable = htmlDataTable;
}
public ArrayList<User> getList() {
if(list.size()<1)
for(int i=0;i<10;i++){
User user=new User();
user.setName("name"+i);
user.setUser("user"+i);
list.add(user);
}
return list;
}
public void setList(ArrayList<User> list) {
this.list = list;
}
public ArrayList<User> selected=new ArrayList<User>();
public ArrayList<User> getSelected() {
return selected;
}
public void setSelected(ArrayList<User> selected) {
this.selected = selected;
}
public void select(){
int index=htmlDataTable.getRowIndex();
User selectedUser=(User)htmlDataTable.getRowData();
System.out.println("you choose "+index+" record ,and User is"+selectedUser.getName()+":::"+selectedUser.getUser());
}
//ajaxSelect方法实现了多选功能。
public void ajaxSelect(AjaxBehaviorEvent event){
HtmlSelectBooleanCheckbox b = (HtmlSelectBooleanCheckbox)event.getComponent();
HtmlSelectBooleanCheckbox def = (HtmlSelectBooleanCheckbox)event.getSource();
System.out.println(b.isSelected());
int index=htmlDataTable.getRowIndex();
User selectedUser=(User)htmlDataTable.getRowData();
System.out.println("you choose ajax"+index+" record ,and User is"+selectedUser.getName()+":::"+selectedUser.getUser());
selected.add(selectedUser);
}
private ArrayList<User> list=new ArrayList<User>();
public int getItemCount() {
return htmlDataTable.getRowCount();
}
public int getPageCount() {
double pageDouble = (htmlDataTable.getRowCount() + htmlDataTable.getRows() - 1) / htmlDataTable.getRows();
int pageCount = (int) Math.ceil(pageDouble);
return pageCount;
}
public int getPageSize() {
return htmlDataTable.getRows();
}
public int getPageIndex() {
if(htmlDataTable.getFirst()==0){
return 1;
}
return htmlDataTable.getFirst()/htmlDataTable.getRows()+1;
}
public void doSomething(){
htmlDataTable.setFirst(htmlDataTable.getFirst() + htmlDataTable.getRows());
}
public void nextAction() {
htmlDataTable.setFirst(htmlDataTable.getFirst() + htmlDataTable.getRows());
}
public void lastAction() {
htmlDataTable.setFirst(htmlDataTable.getRowCount()/htmlDataTable.getRows()*htmlDataTable.getRows());
}
public void firstAction() {
htmlDataTable.setFirst(0);
}
public void prevAction() {
htmlDataTable.setFirst(htmlDataTable.getFirst() - htmlDataTable.getRows());
}
}
User类:
分享到:
相关推荐
下面我们将深入探讨JSF 2.0 `dataTable`的使用以及实现单行修改的具体步骤。 首先,`dataTable`是基于Java的MVC(模型-视图-控制器)框架,用于在网页上呈现动态数据集合。在JSF 2.0中,`<h:dataTable>`是用于创建...
本文将详细介绍JSF2.0的基本概念、核心组件以及如何开始使用JSF2.0进行开发。 ### 一、JSF2.0概述 JSF2.0在JSF1.x的基础上进行了大量的优化,它提供了一个统一的API和XML配置文件,简化了开发流程。主要改进包括:...
本项目"jsf学生信息管理"是基于JSF 2.0实现的学生信息管理系统,主要涵盖了增删改查(CRUD)功能,同时具备分页与批量删除特性,是学习和理解JSF技术的好实例。 1. **JSF 2.0基础** JSF 2.0是Java EE 6中的一个...
在JSF中实现分页,通常涉及到自定义标签库(Taglib),例如`pager-taglib-2.0.war`可能就是这样一个自定义标签库,它提供了一组用于创建分页UI的自定义组件。通过这些组件,开发者可以轻松地在页面间导航,并控制...
5. **Facelets**:JSF2.0引入了Facelets作为默认视图技术,它是一个XML-based的模板引擎,可以更好地组织和重用UI组件。 **入门开发与示例** 学习JSP2.0和JSF,可以通过创建简单的示例项目开始,例如: 1. **...
pager-taglib-ra2.0提供了一种方便的方式来实现这种功能,使得开发者可以轻松地在网页上添加分页导航,而无需编写大量的HTML和JavaScript代码。 2. **JAR文件**:Java Archive (JAR) 文件是Java平台上的归档文件...
它可以无缝地整合到如Spring MVC、Struts、JSF等常见的Java Web框架中,同时也可以独立于这些框架工作,只需简单的配置和调用,就能实现高效的分页效果。 **标签解析:**“分页”是指在大量数据展示时,将数据分成...
3. 配置,JSF2.0 环境下用 PrimeFace2.x 对于JSF 2.0环境,配置PrimeFaces 2.x版本时,需要在`web.xml`中添加以下代码: ```xml <param-name>primefaces.FONT_AWESOME <param-value>true ``` 确保启用PrimeFaces...
3. **异步处理**:JSF 2.0引入了AJAX支持,允许部分页面刷新,提升用户体验。 总之,《MyEclipse JSF快速入门中文版PDF》涵盖了从JSF基本概念到MyEclipse中JSF项目的创建、开发、调试和优化的全过程,是学习和使用...
在JSF 2.0环境中配置PrimeFaces时,需要对web.xml文件进行适当的修改,包括添加PrimeFaces的配置和指定JSF视图处理器。同时,也需要确保服务器环境支持JSF 2.0,因为PrimeFaces的一些特性依赖于该版本的新功能。 ##...
它是帮助程序员检查数据库并如此轻松地生成代码的工具。 列出数据库,MySQL,Oracle和Sybase的表和视图。 从Excel 97-2003文件加载... 从表中生成代码JSF2.0(Action)和PrimeFaces(xhtml),Struts 1.3的代码,等等。
Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...
对于使用 JSF 2.0 的环境,还需要在 `faces-config.xml` 文件中进行必要的配置,以便让 JSF 能够识别 PrimeFaces 的组件。具体配置示例如下: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
2. **配置**(在 JSF 2.0 环境下使用 PrimeFaces 2.x 版本): - 在 `web.xml` 文件中配置 JSF 和 PrimeFaces。 - 添加 `<context-param>` 来定义 PrimeFaces 的资源路径。 - 配置 `<filter>` 和 `...
本书内容丰富、技术全面、案例实用,而且所有的实例都以MyEclipse工程的形式组织,并按章节的顺序组织在附书光盘中,源代码工程都经过精心调试,可以直接导入MyEclipse中运行。 本书内容精练、重点突出、实例丰富,...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
3. **分页显示**:学习如何使用JSP处理大量数据的分页展示,涉及数据库查询和动态生成页面。 **五、JSP与Java EE集成** 1. **EJB(Enterprise JavaBeans)**:在JSP项目中使用EJB进行企业级服务,如事务管理、安全...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...