2007-09-17

jsf实现翻页

关键字: jsf
用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</
评论
fishhappy365 2008-01-15
大哥:能给我你这个工程的源代码码?如果可以的话,发到我邮箱中,我的邮箱地址是:
fishhappy365@163.com
fishhappy365 2008-01-14
大哥:DataTableTag 是final类型的,这个你也能继承?
-妞- 2007-11-22
dragon.tld 文件没帖完整,能否帖完整啊?

我也正在用jsf 做分页,可否把你的完整代码发给我啊?
gapele 2007-09-30
直接用Myfaces的实现岂不是更方便!
fourfire 2007-09-21
谢谢你的回复,我有以下考虑
1 我需要提供多种扩充的查询条件的方式,这是一种,这样的话就可以共用后台一个主查询语句了
也可以实现IScrollDataLoad在后台进行条件添加
2 页面上还有用js添加运行期条件的方法
如books2_condition_txt
这样有些模块就不用为了一个条件的变化而写很多的dao方法了,查询业务,简单一些为好
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(只有一页数据)是否好用些呢
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>
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();
		}
	}

}
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;
	}

}
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);
}
发表评论

您还没有登录,请登录后发表评论

fourfire
搜索本博客
我的相册
9bb2a214-ce06-4cdf-9501-6e1ec739a461-thumb
Image(029)
共 15 张
存档
最新评论