`
fourfire
  • 浏览: 413993 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

jsf实现翻页

    博客分类:
  • Java
阅读更多
用jsf实现了翻页功能,主要原理是扩展datamodel和datatabletag
1 扩展datatabletag,增加了几个属性,用于后台执行查询语句
java 代码
 
  1. package com.longtop.core.web.jsf.tag;  
  2.   
  3. import javax.faces.application.Application;  
  4. import javax.faces.component.UIComponent;  
  5. import javax.faces.context.FacesContext;  
  6. import javax.faces.el.ValueBinding;  
  7.   
  8. import com.sun.faces.taglib.html_basic.DataTableTag;  
  9.   
  10. public class DataTableWithScrollTag extends DataTableTag {  
  11.     private boolean scroll = true;  
  12.   
  13.     private int pageSize = 10;  
  14.   
  15.     private String scrollPageCss = "";  
  16.     private String moduleId;  
  17.     private String statementId;  
  18.     private String beanName;  
  19.     private String implType;  
  20.     private String searchCondition;  
  21.      
  22.     /** 
  23.      * @return the pageSize 
  24.      */  
  25.     public int getPageSize() {  
  26.         return pageSize;  
  27.     }  
  28.   
  29.     /** 
  30.      * @param pageSize 
  31.      *            the pageSize to set 
  32.      */  
  33.     public void setPageSize(int pageSize) {  
  34.         this.pageSize = pageSize;  
  35.     }  
  36.   
  37.     /** 
  38.      * @return the scroll 
  39.      */  
  40.     public boolean isScroll() {  
  41.         return scroll;  
  42.     }  
  43.   
  44.     /** 
  45.      * @param scroll 
  46.      *            the scroll to set 
  47.      */  
  48.     public void setScroll(boolean scroll) {  
  49.         this.scroll = scroll;  
  50.     }  
  51.   
  52.     public String getComponentType() {  
  53.          
  54.         return "com.longtop.core.web.jsf.render.DataTableWithScrollType";  
  55.     }  
  56.   
  57.      
  58.     public void setProperties(UIComponent component) {  
  59.         super.setProperties(component);  
  60.         setStringProperty(component, "pageSize", String.valueOf(pageSize));  
  61.         setStringProperty(component, "scroll", String.valueOf(scroll));  
  62.         setStringProperty(component, "scrollPageCss", scrollPageCss);  
  63.         setStringProperty(component, "moduleId", moduleId);  
  64.         setStringProperty(component, "statementId", statementId);  
  65.         setStringProperty(component, "beanName", beanName);  
  66.         setStringProperty(component, "implType", implType);  
  67.         setStringProperty(component, "searchCondition", searchCondition);  
  68.     }  
  69.   
  70.     private void setStringProperty(UIComponent component, String attrName,  
  71.             String attrValue) {  
  72.         if (attrValue == null)  
  73.             return;  
  74.   
  75.         if (isValueReference(attrValue)) {  
  76.             FacesContext context = FacesContext.getCurrentInstance();  
  77.             Application application = context.getApplication();  
  78.             ValueBinding binding = application.createValueBinding(attrValue);  
  79.             component.setValueBinding(attrName, binding);  
  80.         } else {  
  81.             component.getAttributes().put(attrName, attrValue);  
  82.         }  
  83.     }  
  84.   
  85.     /** 
  86.      * @return the scrollPageCss 
  87.      */  
  88.     public String getScrollPageCss() {  
  89.         return scrollPageCss;  
  90.     }  
  91.   
  92.     /** 
  93.      * @param scrollPageCss the scrollPageCss to set 
  94.      */  
  95.     public void setScrollPageCss(String scrollPageCss) {  
  96.         this.scrollPageCss = scrollPageCss;  
  97.     }  
  98.   
  99.     /** 
  100.      * @return the moduleId 
  101.      */  
  102.     public String getModuleId() {  
  103.         return moduleId;  
  104.     }  
  105.   
  106.     /** 
  107.      * @param moduleId the moduleId to set 
  108.      */  
  109.     public void setModuleId(String moduleId) {  
  110.         this.moduleId = moduleId;  
  111.     }  
  112.   
  113.     /** 
  114.      * @return the statementId 
  115.      */  
  116.     public String getStatementId() {  
  117.         return statementId;  
  118.     }  
  119.   
  120.     /** 
  121.      * @param statementId the statementId to set 
  122.      */  
  123.     public void setStatementId(String statementId) {  
  124.         this.statementId = statementId;  
  125.     }  
  126.   
  127.     /** 
  128.      * @return the beanName 
  129.      */  
  130.     public String getBeanName() {  
  131.         return beanName;  
  132.     }  
  133.   
  134.     /** 
  135.      * @param beanName the beanName to set 
  136.      */  
  137.     public void setBeanName(String beanName) {  
  138.         this.beanName = beanName;  
  139.     }  
  140.   
  141.     /** 
  142.      * @return the implType 
  143.      */  
  144.     public String getImplType() {  
  145.         return implType;  
  146.     }  
  147.   
  148.     /** 
  149.      * @param implType the implType to set 
  150.      */  
  151.     public void setImplType(String implType) {  
  152.         this.implType = implType;  
  153.     }  
  154.   
  155.     /** 
  156.      * @return the searchCondition 
  157.      */  
  158.     public String getSearchCondition() {  
  159.         return searchCondition;  
  160.     }  
  161.   
  162.     /** 
  163.      * @param searchCondition the searchCondition to set 
  164.      */  
  165.     public void setSearchCondition(String searchCondition) {  
  166.         this.searchCondition = searchCondition;  
  167.     }  
  168.   
  169. }  

2 dragon.tld
xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE taglib  
  3. PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  
  4. "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  5. <taglib>  
  6.     <tlib-version>1.0</tlib-version>  
  7.     <jsp-version>2.0</jsp-version>  
  8.     <short-name>d</short-name>  
  9.     <uri>http://com.longtop.net/dataTableWithScroll</uri>  
  10.     <tag>  
  11.         <name>scrollDataTable</name>  
  12.         <tag-class>com.longtop.core.web.jsf.tag.DataTableWithScrollTag</tag-class>  
  13.         <tei-class>com.sun.faces.taglib.FacesTagExtraInfo</tei-class>  
  14.     <body-content>JSP</body-content>  
  15.     <description>  
  16.         
  17.     </description>  
  18.     <attribute>  
  19.       <name>first</name>  
  20.       <required>false</required>  
  21.       <rtexprvalue>false</rtexprvalue>  
  22.       <description>  
  23.         
  24.           Zero-relative row number of the first row to be displayed.  If this  
  25.           property is set to zero, rendering will begin with the first row of  
  26.           the underlying data.  
  27.       </description>  
  28.     </attribute>  
  29.     <attribute>  
  30.       <name>id</name>  
  31.       <required>false</required>  
  32.       <rtexprvalue>false</rtexprvalue>  
  33.       <description>  
  34.         
  35.           The component identifier for this component.  This value must be  
  36.           unique within the closest parent component that is a naming  
  37.           container.  
  38.       </description>  
  39.     </attribute>  
  40.     <attribute>  
  41.       <name>rendered</name>  
  42.       <required>false</required>  
  43.       <rtexprvalue>false</rtexprvalue>  
  44.       <description>  
  45.         
  46.           Flag indicating whether or not this component should be rendered  
  47.           (during Render Response Phase), or processed on any subsequent  
  48.           form submit.  
  49.       </description>  
  50.     </attribute>  
  51.     <attribute>  
  52.       <name>rows</name>  
  53.       <required>false</required>  
  54.       <rtexprvalue>false</rtexprvalue>  
  55.       <description>  
  56.         
  57.           The number of rows to display, starting with the one identified by the  
  58.           "first" property.  If this value is set to zero, all available rows in  
  59.           the underlying data model will be displayed.  
  60.       </description>  
  61.     </attribute>  
  62.     <attribute>  
  63.       <name>value</name>  
  64.       <required>false</required>  
  65.       <rtexprvalue>false</rtexprvalue>  
  66.       <description>  
  67.         
  68.           The current value of this component.  
  69.       </description>  
  70.     </attribute>  
  71.     <attribute>  
  72.       <name>var</name>  
  73.       <required>false</required>  
  74.       <rtexprvalue>false</rtexprvalue>  
  75.       <description>  
  76.         
  77.           Name of a request-scope attribute under which the model data for the  
  78.           row selected by the current value of the "rowIndex" property (i.e.  
  79.           also the current value of the "rowData" property) will be exposed.  
  80.       </description>  
  81.     </attribute>  
  82.     <attribute>  
  83.       <name>bgcolor</name>  
  84.       <required>false</required>  
  85.       <rtexprvalue>false</rtexprvalue>  
  86.       <description>  
  87.         
  88.           Name or code of the background color for this table.  
  89.       </description>  
  90.     </attribute>  
  91.     <attribute>  
  92.       <name>border</name>  
  93.       <required>false</required>  
  94.       <rtexprvalue>false</rtexprvalue>  
  95.       <description>  
  96.         
  97.           Width (in pixels) of the border to be drawn  
  98.           around this table.  
  99.       </description>  
  100.     </attribute>  
  101.     <attribute>  
  102.       <name>cellpadding</name>  
  103.       <required>false</required>  
  104.       <rtexprvalue>false</rtexprvalue>  
  105.       <description>  
  106.         
  107.           Definition of how much space the user agent should  
  108.           leave between the border of each cell and its contents.  
  109.       </description>  
  110.     </attribute>  
  111.     <attribute>  
  112.       <name>cellspacing</name>  
  113.       <required>false</required>  
  114.       <rtexprvalue>false</rtexprvalue>  
  115.       <description>  
  116.         
  117.           Definition of how much space the user agent should  
  118.           leave between the left side of the table and the  
  119.           leftmost column, the top of the table and the top of  
  120.           the top side of the topmost row, and so on for the  
  121.           right and bottom of the table.  It also specifies  
  122.           the amount of space to leave between cells.  
  123.       </description>  
  124.     </attribute>  
  125.     <attribute>  
  126.       <name>columnClasses</name>  
  127.       <required>false</required>  
  128.       <rtexprvalue>false</rtexprvalue>  
  129.       <description>  
  130.         
  131.           Comma-delimited list of CSS style classes that will be applied  
  132.           to the columns of this table.  A space separated list of  
  133.           classes may also be specified for any individual column.  If  
  134.           the number of elements in this list is less than the number of  
  135.           columns specified in the "columns" attribute, no "class"  
  136.           attribute is output for each column greater than the number of  
  137.           elements in the list.  If the number of elements in the list  
  138.           is greater than the number of columns specified in the  
  139.           "columns" attribute, the elements at the posisiton in the list  
  140.           after the value of the "columns" attribute are ignored.  
  141.       </description>  
  142.     </attribute>  
  143.     <attribute>  
  144.       <name>dir</name>  
  145.       <required>false</required>  
  146.       <rtexprvalue>false</rtexprvalue>  
  147.       <description>  
  148.         
  149.           Direction indication for text that does not inherit directionality.  
  150.           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).  
  151.       </description>  
  152.     </attribute>  
  153.     <attribute>  
  154.       <name>footerClass</name>  
  155.       <required>false</required>  
  156.       <rtexprvalue>false</rtexprvalue>  
  157.       <description>  
  158.         
  159.           Space-separated list of CSS style class(es) that will be  
  160.           applied to any footer generated for this table.  
  161.       </description>  
  162.     </attribute>  
  163.     <attribute>  
  164.       <name>frame</name>  
  165.       <required>false</required>  
  166.       <rtexprvalue>false</rtexprvalue>  
  167.       <description>  
  168.         
  169.           Code specifying which sides of the frame surrounding  
  170.           this table will be visible.  Valid values are:  
  171.           none (no sides, default value); above (top side only);  
  172.           below (bottom side only); hsides (top and bottom sides  
  173.           only); vsides (right and left sides only); lhs (left  
  174.           hand side only); rhs (right hand side only); box  
  175.           (all four sides); and border (all four sides).  
  176.       </description>  
  177.     </attribute>  
  178.     <attribute>  
  179.       <name>headerClass</name>  
  180.       <required>false</required>  
  181.       <rtexprvalue>false</rtexprvalue>  
  182.       <description>  
  183.         
  184.           Space-separated list of CSS style class(es) that will be  
  185.           applied to any header generated for this table.  
  186.       </description>  
  187.     </attribute>  
  188.     <attribute>  
  189.       <name>lang</name>  
  190.       <required>false</required>  
  191.       <rtexprvalue>false</
分享到:
评论
10 楼 fishhappy365 2008-01-15  
大哥:能给我你这个工程的源代码码?如果可以的话,发到我邮箱中,我的邮箱地址是:
fishhappy365@163.com
9 楼 fishhappy365 2008-01-14  
大哥:DataTableTag 是final类型的,这个你也能继承?
8 楼 -妞- 2007-11-22  
dragon.tld 文件没帖完整,能否帖完整啊?

我也正在用jsf 做分页,可否把你的完整代码发给我啊?
7 楼 gapele 2007-09-30  
直接用Myfaces的实现岂不是更方便!
6 楼 fourfire 2007-09-21  
谢谢你的回复,我有以下考虑
1 我需要提供多种扩充的查询条件的方式,这是一种,这样的话就可以共用后台一个主查询语句了
也可以实现IScrollDataLoad在后台进行条件添加
2 页面上还有用js添加运行期条件的方法
如books2_condition_txt
这样有些模块就不用为了一个条件的变化而写很多的dao方法了,查询业务,简单一些为好
5 楼 john.yi 2007-09-19  
引用
<d:scrollDataTable id="books2" 
#   value="#{TestBean.otherDataModel}" pageSize="10" var="store2" scroll="true" moduleId="tools" statementId="ChineseLetter" beanName="queryHibernate" searchCondition="obj.id like '%A%'" implType="hibernate"> 

个人不太喜欢这种方式
条件都在页面里了
直接加个总页数,绑定到DataModel(只有一页数据)是否好用些呢
  
4 楼 fourfire 2007-09-17  
测试页面(hibernate实现)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 <%@ taglib uri="/WEB-INF/tld/dragon.tld" prefix="d" %>

        <style type="text/css">
            body { font: 11px Lucida Grande, Verdana, Arial, Helvetica, sans serif; }
            #progressBar { padding-top: 5px; }
            #progressBarBox { width: 350px; height: 20px; border: 1px inset; background: #eee;}
            #progressBarBoxContent { width: 0; height: 20px; border-right: 1px solid #444; background: #9ACB34; }
            td{border: 1px solid #333;text-align:center;}
             tr{border: 1px solid #333;text-align:center;}
        </style>
    
<f:view>
    
 <h:form>
<d:scrollDataTable id="books2"
  value="#{TestBean.otherDataModel}" pageSize="10" var="store2" scroll="true" moduleId="tools" statementId="ChineseLetter" beanName="queryHibernate" searchCondition="obj.id like '%A%'" implType="hibernate">   
 <h:column>
    <f:facet name="header">
      <h:outputText  value="A"/>
    </f:facet>
     <h:outputText value="#{store2.id}"/>
  </h:column>
  <h:column>
   
     <h:outputText value="#{store2.letter}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
      <h:outputText  value="B"/>
    </f:facet>
     <h:outputText value="#{store2.chinese}"/>
  </h:column>
</d:scrollDataTable> 
<input type="button" onclick="document.getElementById('_id0:books2_condition_txt').value='obj.letter like \'%1%\'';alert('');" value="setValue">
 </h:form>
     
 </f:view>
</body>
</html>
3 楼 fourfire 2007-09-17  
解码器
package com.longtop.core.web.jsf.render;

import java.io.IOException;

import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

import com.longtop.core.web.jsf.model.ScrollDataModel;

public class DataTableWithScroll extends
		javax.faces.component.html.HtmlDataTable {

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.faces.component.UIData#encodeBegin(javax.faces.context.FacesContext)
	 */
	@Override
	public void encodeBegin(FacesContext context) throws IOException {

		String clientId = getClientId(context);

		String currentPage = (String) context.getExternalContext()
				.getRequestParameterMap().get(clientId + "_txt");
		String searchCondition_dynamic = (String) context.getExternalContext()
		.getRequestParameterMap().get(clientId + "_condition_txt");
		ScrollDataModel dataModel = (ScrollDataModel) this.getValue();
		dataModel.setImplType((String) this.getAttributes().get("implType"));
		dataModel.setBeanName((String) this.getAttributes().get("beanName"));

		dataModel.setStatementId((String) this.getAttributes().get(
				"statementId"));
		dataModel.setModuleId((String) this.getAttributes().get("moduleId"));
		if (currentPage == null || currentPage.trim().length() == 0) {
			dataModel.setCurrentPage(0);
		} else {
			dataModel.setCurrentPage(Integer.parseInt(currentPage));
		}
		String searchCondition_static=(String) this.getAttributes().get("searchCondition");
		dataModel.setQueryParam(((searchCondition_static==null||searchCondition_static.trim().length()==0)?"":searchCondition_static)+((searchCondition_dynamic==null||searchCondition_dynamic.trim().length()==0)?" ":" and "+searchCondition_dynamic));
		dataModel.loadData();

		super.encodeBegin(context);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
	 */
	@Override
	public void decode(FacesContext context) {
		super.decode(context);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
	 */
	@Override
	public void encodeEnd(FacesContext context) throws IOException {

		super.encodeEnd(context);

		ResponseWriter writer = context.getResponseWriter();
		try {

			ScrollDataModel dataModel = (ScrollDataModel) this.getValue();

			String clientId = getClientId(context);

			writer.startElement("div", this);
			writer.writeAttribute("class", this.getAttributes().get(
					"scrollPageCss"), null);
			writer.writeAttribute("name", clientId + "_div", null);
			writer.writeAttribute("id", clientId + "_div", null);
			// 当前页
			String currentPage = (String) context.getExternalContext()
					.getRequestParameterMap().get(clientId + "_txt");
			writer.startElement("input", this);
			writer.writeAttribute("name", clientId + "_txt", null);
			writer.writeAttribute("id", clientId + "_txt", null);
			writer.writeAttribute("type", "hidden", null);
			writer.writeAttribute("value", "" + currentPage, null);
			writer.endElement("input");
			// 查询条件
			String searchCondition_dynamic = (String) context.getExternalContext()
					.getRequestParameterMap().get(clientId + "_condition_txt");
			writer.startElement("input", this);
			writer.writeAttribute("name", clientId + "_condition_txt", null);
			writer.writeAttribute("id", clientId + "_condition_txt", null);
			writer.writeAttribute("type", "hidden", null);
			writer.writeAttribute("value", "" + ((searchCondition_dynamic==null||searchCondition_dynamic.trim().length()==0)?"":searchCondition_dynamic), null);
			writer.endElement("input");
			

			writer.startElement("a", this);
			writer.writeAttribute("href", "javascript:scrollPage(0)", null);
			writer.writeText("首页", null);
			writer.endElement("a");
			writer.writeText(" ", null);
			if (dataModel.getCurrentPage() == 0) {
				writer.writeText("上一页", null);
			} else {
				writer.startElement("a", this);
				writer.writeAttribute("href", "javascript:scrollPage("
						+ (dataModel.getCurrentPage() - 1) + ")", null);
				writer.writeText("上一页", null);
				writer.endElement("a");
			}
			writer.writeText(" ", null);

			if (dataModel.getCurrentPage() == ((dataModel.getRowTotalCount() / dataModel
					.getRowsInPage()))) {
				writer.writeText("下一页", null);
			} else {
				writer.startElement("a", this);
				writer.writeAttribute("href", "javascript:scrollPage("
						+ (dataModel.getCurrentPage() + 1) + ")", null);
				writer.writeText("下一页", null);
				writer.endElement("a");
			}
			writer.writeText(" ", null);

			writer.startElement("a", this);
			writer.writeAttribute("href", "javascript:scrollPage("
					+ ((dataModel.getRowTotalCount() / dataModel
							.getRowsInPage())) + ")", null);
			writer.writeText("末页", null);
			writer.endElement("a");
			writer.writeText(" ", null);

			writer.startElement("a", this);
			writer.writeText("共" + dataModel.getRowTotalCount() + "条记录", null);
			writer.endElement("a");
			writer.endElement("div");

			writer.startElement("script", this);
			writer.writeAttribute("language", "javascript", null);
			writer.writeText("function scrollPage(p){document.getElementById('"
					+ clientId + "_txt').value=p;"
					+ "document.getElementById('" + clientId
					+ "_txt').form.submit();}", null);
			writer.endElement("script");

		} catch (IOException e) {

			e.printStackTrace();
		}
	}

}
2 楼 fourfire 2007-09-17  
model层
package com.longtop.core.web.jsf.model;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.DataModel;

public class ScrollDataModel extends DataModel {
	/**
	 * 总行数
	 */
	private long rowTotalCount;

	/**
	 * 当前页
	 */
	private int currentPage=0;

	/**
	 * 每页行数
	 */
	private int rowsInPage=10;

	private int rowIndex;
	private List data=new ArrayList();
	private String moduleId;
	private String beanName;
	private String statementId;
	private Object queryParam;
	/**
	 * 接口实现方式
	 */
	private String implType;
	/**
	 * IBATIS
	 */
	public static final  String IMPLTYPE_IBATIS="ibatis";
	/**
	 * HIBERNATE
	 */
	public static final  String IMPLTYPE_HIBERNATE="hibernate";
	public ScrollDataModel()
	{
		super();
		
	}
	public void loadData()
	{
		IScrollDataLoad loader=null;
		data.clear();
		
		if(this.getImplType().toLowerCase().equals(IMPLTYPE_IBATIS))
		{
			loader=new DefaultScrollDataLoaderIBatisImpl();
						
		}else if(this.getImplType().toLowerCase().equals(IMPLTYPE_HIBERNATE))
		{
			loader=new DefaultScrollDataLoaderHibernateImpl();
			
		}
		else{
			try {
				loader=(IScrollDataLoad) Class.forName(moduleId).newInstance();
			} catch (InstantiationException e) {
				
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				
				e.printStackTrace();
			}
		}
		data.addAll(loader.loadData(moduleId,beanName,statementId, queryParam, currentPage*rowsInPage, rowsInPage));

		
		rowTotalCount=loader.loadDataTotalCount(moduleId,beanName,statementId, queryParam);
		
	}

	/**
	 * @return the currentPage
	 */
	public int getCurrentPage() {
		return currentPage;
	}

	/**
	 * @param currentPage
	 *            the currentPage to set
	 */
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	/**
	 * @return the pageCount
	 */
	public long getRowTotalCount() {
		return rowTotalCount;
	}

	/**
	 * @param pageCount
	 *            the pageCount to set
	 */
	public void setRowTotalCount(long rowTotalCount) {
		this.rowTotalCount = rowTotalCount;
	}

	/**
	 * @return the rowsInPage
	 */
	public int getRowsInPage() {
		return rowsInPage;
	}

	/**
	 * @param rowsInPage
	 *            the rowsInPage to set
	 */
	public void setRowsInPage(int rowsInPage) {
		this.rowsInPage = rowsInPage;
	}

	@Override
	public int getRowCount() {
		
		return data.size();
	}

	@Override
	public Object getRowData() {
		
		return data.get(this.getRowIndex());
	}

	@Override
	public int getRowIndex() {
		
		return rowIndex;
	}

	@Override
	public Object getWrappedData() {
		return data.get(this.getRowIndex());
	}

	@Override
	public boolean isRowAvailable() {
		
		if(this.getRowIndex()<data.size()&&this.getRowIndex()>-1) return true;
		return false;
	}

	@Override
	public void setRowIndex(int arg0) {
		rowIndex=arg0;
		
	}

	@Override
	public void setWrappedData(Object arg0) {
		 data.set(this.getRowIndex(),arg0);
		
	}

	/**
	 * @return the beanName
	 */
	public String getBeanName() {
		return beanName;
	}

	/**
	 * @param beanName the beanName to set
	 */
	public void setBeanName(String beanName) {
		this.beanName = beanName;
	}

	/**
	 * @return the data
	 */
	public List getData() {
		return data;
	}

	/**
	 * @param data the data to set
	 */
	public void setData(List data) {
		this.data = data;
	}

	/**
	 * @return the moduleId
	 */
	public String getModuleId() {
		return moduleId;
	}

	/**
	 * @param moduleId the moduleId to set
	 */
	public void setModuleId(String moduleId) {
		this.moduleId = moduleId;
	}

	/**
	 * @return the queryParam
	 */
	public Object getQueryParam() {
		return queryParam;
	}

	/**
	 * @param queryParam the queryParam to set
	 */
	public void setQueryParam(Object queryParam) {
		this.queryParam = queryParam;
	}

	/**
	 * @return the statementId
	 */
	public String getStatementId() {
		return statementId;
	}

	/**
	 * @param statementId the statementId to set
	 */
	public void setStatementId(String statementId) {
		this.statementId = statementId;
	}

	/**
	 * @return the implType
	 */
	public String getImplType() {
		return implType;
	}

	/**
	 * @param implType the implType to set
	 */
	public void setImplType(String implType) {
		this.implType = implType;
	}

}
1 楼 fourfire 2007-09-17  
数据载入接口
/**
 * <p>Description:ltCore</p>
 * <p>Copyright: Copyright (c) 2007</p>
 * <p>Company: LongTop</p>
 * @author blaze
 * @version 1.0
 */
package com.longtop.core.web.jsf.model;

/**
 * 翻页的数据检索接口,包括获得当前页数据,和获得数据总数两个方法
 */
public interface IScrollDataLoad {

	/**
	 * 获得当前页数据
	 * 
	 * @param moduleId 模块id
	 * @param beanName bean名称
	 * @param statementId 语句id
	 * @param queryParam
	 *            查询条件
	 * @param startIndex
	 *            开始行
	 * @param rowsInPage
	 *            每页行数
	 * @return
	 */
	public java.util.Collection loadData(String moduleId, String beanName,
			String statementId, Object queryParam, int startIndex,
			int rowsInPage);

	/**
	 *  获得数据总行数
	 * @param moduleId 模块id
	 * @param beanName bean名称
	 * @param statementId 语句id
	 * @param queryParam查询条件
	 * @return
	 */
	public long loadDataTotalCount(String moduleId, String beanName,
			String statementId, Object queryParam);
}

相关推荐

    jsf基础教程+JPA教程

    开发者可以在JSF的视图层中直接绑定JPA实体,实现数据的动态显示和更新。这种方式极大地提高了开发效率,同时保持了代码的整洁和模块化。 总结,JSF和JPA是Java EE环境中构建Web应用的重要工具,它们分别解决了用户...

    jsf自带分页

    JSF 提供了多种方式来创建分页UI,例如使用h:commandLink或p:commandButton来表示翻页操作,使用h:outputText或p:outputLabel显示当前页码和总页数。你可以在自定义组件或者现有的JSF库(如PrimeFaces)中找到专门...

    JSF分页组件2

    在JSF中,我们可以使用各种分页组件来实现这一功能。本文将深入探讨JSF分页组件2的相关知识点,包括其原理、使用方法和最佳实践。 ### 1. 分页组件的基本概念 分页组件允许用户以有限的数量逐页查看数据,而不是一...

    JSF分页组件

    本篇文章将深入探讨JSF中的分页组件,以及如何利用它们来实现高效的数据分页。 **1. 分页组件的基本概念** 分页组件通常由两个主要部分组成:分页导航和数据显示区。分页导航包括上一页、下一页、首页和末页等按钮...

    JSF数据分页的简单例子(源码)

    在这个简单的例子中,我们关注的是如何在JSF应用中实现数据分页。 **数据分页**是一种在大量数据展示时优化用户体验的技术,它允许用户逐步加载和查看数据,而不是一次性加载所有内容,这可以提高页面加载速度,...

    jsf分页——详细源码 测试通过

    4. **事件处理**:当用户进行翻页操作时,JSF会触发一个动作事件,该事件需要被`ManagedBean`捕获并处理,以更新显示的数据。 5. **分页参数传递**:在URL中或者使用隐式请求参数(例如,通过`f:param`标签)传递...

    翻页功能java控件

    综上所述,"翻页功能java控件"简化了Java Web开发中的分页处理,通过提供预定义的标签和配置,使得开发者可以快速地在JSP页面上实现翻页功能,提高开发效率。理解并熟练使用这个控件,有助于我们在处理大量数据展示...

    jsf开发的人员管理分页源代码crud

    在这个“人员管理分页源代码CRUD”项目中,开发者使用JSF来实现一个基本的人力资源管理系统,包括创建(Create),读取(Retrieve),更新(Update)和删除(Delete)功能,并且具备了分页功能,使得数据浏览更加高效。...

    Spring boot框架实现分页(附Spring boot文档)

    提供的文档可能包括Spring Boot官方文档,Spring Data JPA的分页章节,以及如何在Thymeleaf或JSF等视图技术中展示分页信息的示例。这些文档会帮助你更深入地理解和实践分页功能。 9. **最佳实践** - 使用`Page`...

    MyFaces Oracle大数据表分页封装.docx

    Oracle数据库作为常用的关系型数据库系统,结合JavaServer Faces (JSF) 框架,可以实现高效的分页功能。`MyFaces`是JSF的一个实现,它提供了丰富的组件库来构建Web应用。在这个文档中,我们将探讨如何使用`MyFaces`...

    java-pager-tablib.rar_pager

    `pager-tablib`库通常与Servlet容器(如Tomcat、Jetty等)以及Java服务器页面(JSP)和JavaServer Faces (JSF)框架一起使用。这个库提供了自定义标签,可以直接在JSP页面上嵌入,通过简单的配置就能实现复杂的分页...

    java面试题

    - **Struts2** 则更加灵活,它是基于拦截器的架构,可以更好地与Java EE的标准技术如JSP、JSF等集成。Struts2支持拦截器机制,使得业务逻辑更加清晰。 #### 2. 数据库的用途 数据库主要用于存储、管理和检索数据。...

Global site tag (gtag.js) - Google Analytics