RichFaces JSF自定义分页组件(简洁版)
来源:互联网 发布:linux系统查看log日志 编辑:程序博客网 时间:2024/06/12 15:50
使用原有的组件分页,所有的数据都要从数据库取出来,当大量数据的时候比较消耗资源,下边例子实现了从数据库的分页,采用RichFaces4实现,改到其他的版本只要修改显示的部分即可。
AbstractPager.java
是个抽象的分页类,用于实现了分页的功能。是需要分页的受管bean的父类,只要重写2个抽象方法就可以。
package com.gzeport.app.eLargeClearance.common;import java.util.List;/** * @author LiCailong * * * @param <T> */public abstract class AbstractPager<T> {protected Integer pageSize = 20; // 每页显示的数量protected Integer curPage = 1; // 当前的页码protected Integer recordSize = 0; // 记录总数protected Integer totalPage = 0; // 总页数protected List<T> model = null;/** * @param pageSize * 每页显示的数量 * * * @param currentPage * 当前的页码 * * @return */protected abstract List<T> loadData(int pageSize, int currentPage);/** * 返回记录总数 * @return */protected abstract int getRowSize();protected void fillData() {recordSize = getRowSize();if (recordSize < pageSize) {totalPage = 1;} else {double tempRecordSize = recordSize;totalPage = (int) Math.ceil(tempRecordSize / pageSize);}if (curPage < 1) {curPage = 1;} else if (curPage > totalPage) {curPage = totalPage;}this.model = loadData(pageSize, curPage);}public String firstPage() {setCurPage(1);return null;}public String previousPage() {if (curPage > 1) {curPage--;}fillData();return null;}public String nextPage() {if (curPage < totalPage) {curPage++;}fillData();return null;}public String lastPage() {setCurPage(getTotalPage());return null;}public int getInit() {fillData();return 0;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;fillData();}public Integer getCurPage() {return curPage;}public void setCurPage(Integer curPage) {this.curPage = curPage;fillData();}public Integer getTotalPage() {return totalPage;}public List<T> getModel() {return model;}public Integer getRecordSize() {return recordSize;}}
scrollerBar.xhtml
用于显示分页的导航按钮
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><ui:composition 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:rich="http://richfaces.org/rich"xmlns:a4j="http://richfaces.org/a4j"xmlns:c="http://java.sun.com/jsp/jstl/core"><h:form><h:panelGrid columns="11" id="scrollerBar"><rich:select value="#{bean.pageSize}" listWidth="80px"id="selPageSize" required="true"><c:forEach begin="1" end="3" varStatus="st"><f:selectItem itemLabel="每页显示#{st.count * 10}条"itemValue="#{st.count * 10}" /></c:forEach><a4j:ajax event="selectitem" render="#{dataTable} scrollerBar" /></rich:select><script type="text/javascript"> #{rich:component('selPageSize')}.setValue(#{bean.pageSize}); </script><a4j:commandLink value="首页" action="#{bean.firstPage}"render="#{dataTable} scrollerBar" disabled="#{bean.curPage == 1}" /><a4j:commandLink value="上页" action="#{bean.previousPage}"render="#{dataTable} scrollerBar" disabled="#{bean.curPage == 1}" /><a4j:commandLink value="下页" action="#{bean.nextPage}"render="#{dataTable} scrollerBar"disabled="#{bean.curPage == bean.totalPage}" /><a4j:commandLink value="末页" action="#{bean.lastPage}"render="#{dataTable} scrollerBar"disabled="#{bean.curPage == bean.totalPage}" /><h:outputText value="第#{bean.curPage}/#{bean.totalPage}页 "></h:outputText><h:outputText value="#{bean.pageSize}条/页"></h:outputText><h:outputText value="共#{bean.recordSize}条记录"></h:outputText><rich:select value="#{bean.curPage}" id="selPage" listWidth="20px"><c:forEach begin="1" end="#{bean.totalPage}" varStatus="st"><f:selectItem itemLabel="#{st.count}" itemValue="#{st.count}" /></c:forEach><a4j:ajax event="selectitem" render="#{dataTable} scrollerBar" /></rich:select><a4j:status><f:facet name="start"><h:graphicImage value="/images/ai.gif" /></f:facet></a4j:status></h:panelGrid><script type="text/javascript"> document.getElementById("#{rich:clientId('selPageSize')}Input") .setAttribute("style", "width: 80px !important;"); document.getElementById("#{rich:clientId('selPage')}Input") .setAttribute("style", "width: 20px !important;"); </script></h:form></ui:composition>
分页页面使用的例子
<!-- 初始化数据 --><h:inputHidden value="#{topicBean.init}" /><!-- 分页 --><ui:include src="/inc/scrollerBar.xhtml"><ui:param name="bean" value="#{topicBean}" /><ui:param name="dataTable" value="table" /></ui:include>
- RichFaces JSF自定义分页组件(简洁版)
- 自定义JSF通用分页组件
- JSF界面组件套装RichFaces 3.3.1 GA版发布了!
- 分页 jsf组件dataTable
- RichFaces 4.0.0正式版发布,开源JSF组件库
- 创建JSF自定义组件
- 创建JSF自定义组件
- 自定义JSF组件
- JSF 自定义组件
- jsf自定义toolbar组件
- jsf 创建自定义组件
- JSF自定义组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- 专注于操作系统18之完整的特权级转换
- 如何开发出成功的iPhone游戏
- 【windows--进程和线程】多线程编程(比较完整的简单介绍)
- ajax请求时弹出*.action下载对话框的解决方案
- HTTPS和HTTP的区别
- RichFaces JSF自定义分页组件(简洁版)
- Android开机启动Service
- jsp第一课-jsp简介
- 函数模板的简单使用
- Android Parcelable的使用
- struts2:使用通配符的方法进行动态方法调用
- S_ISREG等几个常见的宏
- ajax走入error问题
- 童心未泯---丢人丢大了