Jsp分页原代码,及用法
发表于:2007-07-04来源:作者:点击数:
标签:
1.定义一个分页的Tag Bean,以便用户在Jsp页中使用自定义标签,用户在使用时可以相应的描述 package BSC.tree; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.tagext.TagSupport; import javax.servlet.http.Ht
1.定义一个分页的Tag Bean,以便用户在Jsp页中使用自定义标签,用户在使用时可以相应的描述
package BSC.tree;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionServlet;
import java.
sql.*;
import BSC.pool.*;
import java.util.*;
//import java.util.regex.Pattern;
import pubBean.Patten;
import BSC.tree.pagetag.*;
/**
* @author 丁小龙(DingXiaolong)
* @version 1.1
* @deprecated 能够通过SQL语句产生一个GRID并且可通过相应的CSS设置相应的属性
* @param strSQL 需要执行的查询SQL语句
* @param pageSize Grid每一页所生的记录行数(Row)
* @param action 当点分页素引号码所要跳转的页面名称,必须是使用本标志页面的名称
* @param style 整个Grid的CSS的CLASS的设置
* @param ctrPageBeanSessionNM 内部使用
* @param pageTileBeanSessionNM 未使用,暂保留
* @param databeanNM 存储Grid所有数据集合,如果和ScriptTag对应的标志类合用时候,必须与其name使用相同值
* @param loginIndexSessionNM 存储物理数据与逻辑数据的索引对应的集合名称,如果和ScriptTag对应的标志类合用时候,必须与其loginIndexSessionNM使用相同值
* @param caption Grid表头标题,各列(Col)的标题用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致
* @param isHidden Grid各列是否显示(0--显示,1--为不显示),各列(Col)是否显示值用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致
* @param trStyle Grid各行的CSS设置值
* @param tableWidth Grid表的宽度,可以是绝对值的表达方式,也可以是相对值的表达方式
* @param tdWidth Grid各列(col)之宽度,各列(Col)宽度用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致
* @param database 在Sturts-config中设置的datasource key名
*/
public class PageScriptTag
extends BodyTagSupport {
private String strSQL;
private String pageSize = "1";
private String action;
private String style;
private String currentSize = "1";
private String ctrPageBeanSessionNM;
private String pageTileBeanSessionNM;
private String displayCol;
private String logicIndex;
private String databeanNM;
private String loginIndexSessionNM;
private String caption;
private String isHidden;
protected static int scope = 2;
private String trStyle;
private String headTrStyle;
private String headTdStyle;
private String tdStyle;
private String tableWidth;
private String tdWidth;
private String urlPara;
private String oddTrStyle; //Grid 奇行css的class设置
private String evenTrStyle;
private String database;//Grid 奇行css的class设置
public PageScriptTag() {
}
public String getAction() {
return action;
}
public String getCtrPageBeanSessionNM() {
return ctrPageBeanSessionNM;
}
public String getCurrentSize() {
return currentSize;
}
public String getDisplayCol() {
return displayCol;
}
public String getPageSize() {
return pageSize;
}
public String getPageTileBeanSessionNM() {
return pageTileBeanSessionNM;
}
public String getStrSQL() {
return strSQL;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
public void setStrSQL(String strSQL) {
this.strSQL = strSQL;
}
public void setPageTileBeanSessionNM(String pageTileBeanSessionNM) {
this.pageTileBeanSessionNM = pageTileBeanSessionNM;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public void setDisplayCol(String displayCol) {
this.displayCol = displayCol;
}
public void setCurrentSize(String currentSize) {
this.currentSize = currentSize;
}
public void setCtrPageBeanSessionNM(String ctrPageBeanSessionNM) {
this.ctrPageBeanSessionNM = ctrPageBeanSessionNM;
}
public void setAction(String action) {
this.action = action;
}
public int doEndTag() throws javax.servlet.jsp.JspException {
/**@todo Override this javax.servlet.jsp.tagext.BodyTagSupport method*/
System.out.println("In Class PageScriptTag''s doEndTag");
System.out.println("The scope is "+this.scope);
Connection conn=null;
//本类可以参考本人发表的 “定义自己的Connection Pool”
PoolBean datasource=null;
try {
//初始化
数据库连接
//得到数据库开始,用户可以使用自己的连接池类 datasource=(PoolBean)pageContext.getAttribute(this.getDatabase(),3);
if(datasource==null){
DB_Operate db_oper=new DB_Operate();
datasource=db_oper.getDataSource(this.getDatabase());
}
conn=datasource.getConnection();
//得到数据库结束
Patten strP=new Patten();
if (getStrSQL() != null) {
strP.compile("<");
String[] strsqlarr = strP.split(getStrSQL());
String tmpstr="";
String strLink="";
for(int strI=0;strI<strsqlarr.length;strI++)
{
tmpstr+=strLink+strsqlarr[strI];
strLink="<";
}
this.setStrSQL(tmpstr);
}
System.out.println(this.getStrSQL());
PageDataBean databean = (PageDataBean)this.pageContext.getAttribute(
getDatabeanNM(), scope);
if (databean == null) {
databean = new PageDataBean(this.getStrSQL(), conn);
}
else {
if (databean.getIsFlg().equals("0")) {
databean.setStrSQL(this.getStrSQL());
databean.init(conn);
System.out.println("Initialing the PageDataBean.........");
databean.setIsFlg("1");
}
}
int colCount = (new Integer(databean.getColCount())).intValue();
JspWriter out = this.pageContext.getOut();
String tmpDis = this.getDisplayCol();
//Patten类参考我发表的 “java正则表达式”
Patten p = new Patten();
p.compile(",");
String ctrPageBeanNM;
if (this.getCtrPageBeanSessionNM() == null) {
ctrPageBeanNM = "CTRPAGE";
}
else {
ctrPageBeanNM = getCtrPageBeanSessionNM();
}
CtrPageBean ctrpge = (CtrPageBean) pageContext.getAttribute(ctrPageBeanNM,
scope);
Vector datas = databean.getDataList();
Hashtable dataarry = databean.getDataArray();
if (ctrpge == null) {
ctrpge = new CtrPageBean(datas.size() + "", getPageSize());
}
String tmpLoginIndexSessionNM = "";
if (this.getLoginIndexSessionNM() == null) {
tmpLoginIndexSessionNM = "tmpLoginIndexSessionNM";
}
else {
tmpLoginIndexSessionNM = this.getLoginIndexSessionNM();
//返回的资料库本栏位开始的位置
}
int colcapstar = databean.getColnameindex().size() - colCount;
//初始化是否要隐藏
String tmpIsHidden = this.getIsHidden();
String[] tmpIsHiddenArray = p.split(tmpIsHidden);
for (int hidindex = colcapstar;
hidindex < tmpIsHiddenArray.length + colcapstar; hidindex++) {
databean.getIsHiddenArray().put( (String) databean.getColnameindex().
elementAt(hidindex),
tmpIsHiddenArray[hidindex - colcapstar]);
}
//初始化Grid的标题
String tmpCaption = this.getCaption();
String[] tmpCaptionArr = p.split(tmpCaption);
for (int capindex = colcapstar;
capindex < tmpCaptionArr.length + colcapstar; capindex++) {
databean.getCaptionArray().put( (String) databean.getColnameindex().
elementAt(capindex),
tmpCaptionArr[capindex - colcapstar]);
}
//初奴化Grid各col的宽度
String tdwidflg="0";
String tmpWidth=this.getTdWidth();
if(tmpWidth!=null){
String[] tmpWidthArr = p.split(tmpWidth);
for (int widindex = colcapstar;
widindex < tmpWidthArr.length + colcapstar; widindex++) {
databean.getWidthArray().put( (String) databean.getColnameindex().
elementAt(widindex),
tmpWidthArr[widindex - colcapstar]);
}
tdwidflg="1";
}
String[] tmpLogicIndexs = null;
Vector logicIndexs = (Vector) pageContext.getAttribute(
tmpLoginIndexSessionNM, scope);
if (logicIndexs == null) {
logicIndexs = new Vector();
}
if (this.getLogicIndex() != null) {
tmpLogicIndexs = p.split(this.getLogicIndex());
if (tmpLogicIndexs.length != colCount) {
int oldsize = logicIndexs.size();
logicIndexs.removeAllElements();
for (int i = 1; i <= colCount + oldsize; i++) {
int tmp = i - 1;
logicIndexs.addElement("" + tmp);
}
}
else {
for (int i = 1; i <= colCount; i++) {
logicIndexs.addElement("" + tmpLogicIndexs[i - 1]);
}
}
}
else {
int oldsize = logicIndexs.size();
logicIndexs.removeAllElements();
for (int i = 1; i <= colCount + oldsize; i++) {
int tmp = i - 1;
logicIndexs.addElement("" + tmp);
}
}
Hashtable ScriptObj = new Hashtable();
Hashtable CaptionObj = new Hashtable();
Hashtable isHiddenObj = new Hashtable();
Hashtable widthObj= new Hashtable();
Hashtable
TDObj = new Hashtable();
for (int i = 0; i < logicIndexs.size(); i++) {
// int lgcIndex=new Integer((String)logicIndexs.elementAt(i)).intValue();
String colkey =(String) databean.getColnameindex().elementAt(i);
String lgcIndex = (String) logicIndexs.elementAt(i);
CaptionObj.put(lgcIndex, databean.getCaptionArray().get(colkey));
isHiddenObj.put(lgcIndex, databean.getIsHiddenArray().get(colkey));
widthObj.put(lgcIndex,databean.getWidthArray().get(colkey));
if (colkey.indexOf("Script,,,") == -1) {
if (databean.getDataArray().get(colkey) != null) {
ScriptObj.put(lgcIndex, databean.getDataArray().get(colkey));
TDObj.put(lgcIndex, colkey);
}
}
else {
String strScript = (String) databean.getDataArray().get(colkey);
Vector vecScript = new Vector();
for (int k = 0; k < databean.getDataList().size(); k++) {
vecScript.addElement(strScript);
}
ScriptObj.put(lgcIndex, vecScript);
TDObj.put(lgcIndex, "Script___");
}
}
ctrpge.setCurrent(getCurrentSize());
int start = (ctrpge.getInteger(ctrpge.getCurrent()) - 1) *
ctrpge.getInteger(ctrpge.getPageSize());
int offset = (ctrpge.getInteger(ctrpge.getCurrent())) *
ctrpge.getInteger(ctrpge.getPageSize());
out.print("<table border=\"0\" cellspacing=\"1\" ");
if(this.getTableWidth()!=null){
out.print(" width=\""+this.getTableWidth()+"\" ");
}
if (this.getStyle() != "") {
out.print(" class=\"");
out.print(style);
out.print("\"");
}
out.println(">");
out.print("<tr ");
if(this.getHeadTrStyle()!=null)
out.println(" class=\""+this.getHeadTrStyle()+"\" >");
for (int capindex = 0; capindex < CaptionObj.size(); capindex++) {
out.print(" <td align=''center'' ");
if ( ( (String) isHiddenObj.get("" + capindex)).equals("1")) {
out.print(" style=\"display:none\" ");
}
if(tdwidflg.equals("1")){
out.print(" width=\""+(String)widthObj.get(""+capindex)+"\"");
}
if(this.getHeadTdStyle()!=null)
out.print(" class=\""+this.getHeadTdStyle()+"\" >");
out.println(">");
out.println( (String) CaptionObj.get("" + capindex));
out.println(" </td>");
}
out.println("</tr>");
int Rec_count = 0;
for (int i = start, k = 0; i < offset && i < datas.size(); k++, i++) {
String tdstyle = "td";
out.println("<tr id=''TmpGridID_" + k + "'' style=''cursor: hand''");
out.print(" onMouseOver=\"f_onclick(this," + k + "," + ScriptObj.size() +
")\" ");
if(k%2==0&&this.getEvenTrStyle()!=null){
out.print(" class=\"");
out.print(this.getEvenTrStyle()+"\"");
}
if(k%2!=0&&this.getOddTrStyle()!=null){
out.print(" class=\"");
out.print(this.getOddTrStyle()+"\"");
}
if(this.getTrStyle()!=null&&this.getEvenTrStyle()==null&&k%2==0){
out.print(" class=\"");
out.print(this.getTrStyle()+"\"");
}
if(this.getTrStyle()!=null&&this.getOddTrStyle()==null&&k%2!=0){
out.print(" class=\"");
out.print(this.getTrStyle()+"\"");
}
out.print(" >");
for (int j = 0; j < ScriptObj.size(); j++) {
Vector tdvalues = (Vector) ScriptObj.get("" + j);
String td_id = (String) TDObj.get("" + j);
out.print(" <td align=''left''");
out.print(" id=''TD_" + td_id + "_" + i + "_" + j + "''");
if ( ( (String) isHiddenObj.get("" + j)).equals("1")) {
out.print(" style=\"display:none\" ");
}
if(this.getTdStyle()!=null){
out.print(" class=\"");
out.print(this.getTdStyle()+"\"");
}
out.println(">");
String tdval = (String) tdvalues.elementAt(i);
if (!td_id.equals("Script___")) {
out.println("<input type=''hidden'' id=''TDVal_" + td_id + "_" + k +
"'' value=''" + tdval + "''>");
}
out.println(tdval);
out.println(" </td>");
}
out.println("</tr>");
Rec_count++;
}
out.println("<input type=''hidden'' name=''TmpGrid_RecordCount'' value=''" +
Rec_count + "'' >");
out.println("</table>");
//输出分页检索的页码
String hyperlink = null;
if (ctrpge.getInteger(ctrpge.getMax()) > 1 && this.getAction() != null) {
hyperlink = ( (HttpServletResponse) pageContext.getResponse()).
encodeURL(this.getAction());
if (hyperlink != null) {
out.println("<br>");
out.println
(
"<table width=''100%'' border=\"0\" cellspacing=\"0\" cellpadding=\"0\"");
/* if (style != "") {
out.println(" class=\"");
out.println(style);
out.println("\"");
}*/
out.print(">");
out.println("<tr>");
out.println(" <td align=''center'' width=''10%''>");
out.print("共" + ctrpge.getMax() + "页");
out.print("当前为第" + ctrpge.getCurrent() + "页 ");
out.println("页数检索: ");
out.print("<a href=\"");
String propmt = "";
if (this.getAction().indexOf(''?'') == -1) {
propmt = "?";
}
out.print(hyperlink);
out.print(propmt + "index=" + 1);
out.print("\"");
out.print(">");
out.print("[第一页]");
out.print("</a>");
out.println(" ");
out.print("<a href=\"");
out.print(hyperlink);
out.print(propmt + "index=" + ctrpge.getLast());
if(this.getUrlPara()!=null){
out.print("&"+this.getUrlPara());
}
out.print("\"");
out.print(">");
out.print("上一页");
out.print("</a>");
out.println(" ");
int indexmax = ctrpge.getInteger(ctrpge.getMax());
int indexcur = ctrpge.getInteger(ctrpge.getCurrent());
int indexstart = indexcur - indexcur % 10 + 1;
int indexoffect = indexcur - indexcur % 10 + 10;
for (int mindex = indexstart;
mindex <= indexoffect && mindex <= indexmax; mindex++) {
out.print("<a href=\"");
out.print(hyperlink);
out.print(propmt + "index=" + mindex);
if(this.getUrlPara()!=null){
out.print("&"+this.getUrlPara());
}
out.print("\"");
out.print(">");
out.print(mindex);
out.print("</a>");
out.println(" ");
}
out.print("<a href=\"");
out.print(hyperlink);
out.print(propmt + "index=" + ctrpge.getNext());
if(this.getUrlPara()!=null){
out.print("&"+this.getUrlPara());
}
out.print("\"");
out.print(">");
out.print("下一页");
out.print("</a>");
out.println(" ");
out.print("<a href=\"");
out.print(hyperlink);
out.print(propmt + "index=" + ctrpge.getMax());
if(this.getUrlPara()!=null){
out.print("&"+this.getUrlPara());
}
out.print("\"");
out.print(">");
out.print("[最末页]");
out.print("</a>");
out.println(" ");
out.println(" </td>");
out.println(" </tr>");
out.println("</table>");
}
}
pageContext.setAttribute(ctrPageBeanNM, ctrpge, scope);
pageContext.setAttribute(tmpLoginIndexSessionNM, logicIndexs, scope);
}
catch (Exception e) {
System.out.println("PageScriptTag Error:" + e.getMessage());
}
finally{
try{
if(conn!=null)
conn.close();
}catch(SQLException sqle){
sqle.printStackTrace();
}
}
return super.doEndTag();
}
public String getLogicIndex() {
return logicIndex;
}
public void setLogicIndex(String logicIndex) {
this.logicIndex = logicIndex;
}
public String getDatabeanNM() {
return databeanNM;
}
public void setDatabeanNM(String databeanNM) {
this.databeanNM = databeanNM;
}
public String getLoginIndexSessionNM() {
return loginIndexSessionNM;
}
public void setLoginIndexSessionNM(String loginIndexSessionNM) {
this.loginIndexSessionNM = loginIndexSessionNM;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String getIsHidden() {
return isHidden;
}
public void setIsHidden(String isHidden) {
this.isHidden = isHidden;
}
public String getTrStyle() {
return trStyle;
}
public void setTrStyle(String trStyle) {
this.trStyle = trStyle;
}
public String getHeadTrStyle() {
return headTrStyle;
}
public void setHeadTrStyle(String headTrStyle) {
this.headTrStyle = headTrStyle;
}
public String getHeadTdStyle() {
return headTdStyle;
}
public void setHeadTdStyle(String headTdStyle) {
this.headTdStyle = headTdStyle;
}
public String getTdStyle() {
return tdStyle;
}
public void setTdStyle(String tdStyle) {
this.tdStyle = tdStyle;
}
public String getTableWidth() {
return tableWidth;
}
public void setTableWidth(String tableWidth) {
this.tableWidth = tableWidth;
}
public String getTdWidth() {
return tdWidth;
}
public void setTdWidth(String tdWidth) {
this.tdWidth = tdWidth;
}
public String getUrlPara() {
return urlPara;
}
public void setUrlPara(String urlPara) {
this.urlPara = urlPara;
}
public String getOddTrStyle() {
return oddTrStyle;
}
public void setOddTrStyle(String oddTrStyle) {
this.oddTrStyle = oddTrStyle;
}
public String getEvenTrStyle() {
return evenTrStyle;
}
public void setEvenTrStyle(String evenTrStyle) {
this.evenTrStyle = evenTrStyle;
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
}
2.定义次Tag Bean,它是一个用呈现特殊html组件,如text,button等
package BSC.tree;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.*;
import pubBean.*;
import BSC.tree.pagetag.*;
public class ScriptTag
extends BodyTagSupport {
private String name;
private String property;
private String value;
private String index;
private String loginIndexSessionNM;
private String caption;
private String isHidden;
protected static int scope = 2;
private String width;
public ScriptTag() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int doEndTag() throws javax.servlet.jsp.JspException {
/**@todo Override this javax.servlet.jsp.tagext.BodyTagSupport method*/
System.out.println("In Class ScriptTag ''s doEndTag()");
try {
System.out.println("The scope is "+this.scope);
PageDataBean databean = (PageDataBean)this.pageContext.getAttribute(this.
getName(), scope);
Vector logicIndexs = (Vector)this.pageContext.getAttribute(this.
getLoginIndexSessionNM(), scope);
if (databean == null) {
System.out.println("Create the DataBean...");
databean = new PageDataBean();
}
if (logicIndexs == null) {
logicIndexs = new Vector();
}
logicIndexs.addElement(this.getIndex());
databean.getColnameindex().addElement("Script,,," + this.getProperty());
databean.getDataArray().put("Script,,," + this.getProperty(),
this.getValue());
databean.getCaptionArray().put("Script,,," + this.getProperty(),
this.getCaption());
databean.getIsHiddenArray().put("Script,,," + this.getProperty(),
this.getIsHidden());
databean.getWidthArray().put("Script,,,"+this.getProperty(),
this.getWidth());
pageContext.setAttribute(this.getName(), databean, scope);
pageContext.setAttribute(this.getLoginIndexSessionNM(), logicIndexs,
scope);
}
catch (Exception e) {
System.out.println("ScriptTag Error:" + e.getMessage());
}
return super.doEndTag();
}
public String getIndex() {
return index;
}
public void setIndex(String index) {
this.index = index;
}
public String getLoginIndexSessionNM() {
return loginIndexSessionNM;
}
public void setLoginIndexSessionNM(String loginIndexSessionNM) {
this.loginIndexSessionNM = loginIndexSessionNM;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String getIsHidden() {
return isHidden;
}
public void setIsHidden(String isHidden) {
this.isHidden = isHidden;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
}
3.定义一个用于执行sql查询语句,并将相应的数保存到该Bean里面
package BSC.tree.pagetag;
import java.sql.*;
import java.util.*;
public class PageDataBean {
private Vector dataList=new Vector();
private String strSQL="";
private String colCount="0";
private java.util.Hashtable dataArray=new Hashtable();
private java.util.Vector colnameindex=new Vector();
private java.util.Hashtable captionArray=new Hashtable();
private java.util.Hashtable isHiddenArray=new Hashtable();
private String isFlg="0";
private java.util.Hashtable widthArray=new Hashtable();
public PageDataBean(String strSQL,Connection conn) {
this.setStrSQL(strSQL);
init(conn);
}
public PageDataBean(){
}
public Vector getDataList() {
return dataList;
}
protected void setDataList(java.util.Vector dataList) {
this.dataList = dataList;
}
public String getStrSQL() {
return strSQL;
}
public void setStrSQL(String strSQL) {
this.strSQL = strSQL;
}
public void init(Connection conn){
try{
// Statement stat=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(this.getStrSQL());
ResultSet tmrs=null;
if(rs!=null){
int colcount=rs.getMetaData().getColumnCount();
this.setColCount(""+colcount);
int re
clearcase/" target="_blank" >ccount=0;
while(rs.next()){
reccount++;
Vector rowDate=new Vector();
for(int i=1;i<=colcount;i++){
rowDate.addElement(notNull(rs.getString(i)));
}
this.getDataList().addElement(rowDate);
}
for(int i=1;i<=colcount;i++){
this.getColnameindex().addElement(rs.getMetaData().getColumnName(i));
}
if(reccount!=0){
for (int i = 1; i <= colcount; i++) {
//rs.first();
tmrs=stat.executeQuery(this.getStrSQL());
Vector cols = new Vector();
while (tmrs.next()) {
cols.addElement(notNull(tmrs.getString(i)));
}
this.addNode(tmrs.getMetaData().getColumnName(i), cols);
tmrs.close();
}
}
}
}catch(Exception e){
System.out.print("PageDataBean Error: "+e.getMessage());
}
}
public String getColCount() {
return colCount;
}
protected void setColCount(String colCount) {
this.colCount = colCount;
}
public java.util.Hashtable getDataArray() {
return dataArray;
}
public void setDataArray(java.util.Hashtable dataArray) {
this.dataArray = dataArray;
}
void addNode(String name,Object obj) throws IllegalArgumentException {
synchronized (dataArray) {
if (dataArray.containsKey(name))
throw new IllegalArgumentException("Column name ''" + name +
"'' is not unique");
dataArray.put(name, obj);
}
}
void addCaptionNode(String name,String obj) throws IllegalArgumentException {
synchronized (captionArray) {
if (dataArray.containsKey(name))
throw new IllegalArgumentException("Column name ''" + name +
"'' is not unique");
captionArray.put(name, obj);
}
}
public java.util.Vector getColnameindex() {
return colnameindex;
}
public void setColnameindex(java.util.Vector colnameindex) {
this.colnameindex = colnameindex;
}
public java.util.Hashtable getCaptionArray() {
return captionArray;
}
public void setCaptionArray(java.util.Hashtable captionArray) {
this.captionArray = captionArray;
}
public java.util.Hashtable getIsHiddenArray() {
return isHiddenArray;
}
public void setIsHiddenArray(java.util.Hashtable isHiddenArray) {
this.isHiddenArray = isHiddenArray;
}
public String getIsFlg() {
return isFlg;
}
public void setIsFlg(String isFlg) {
this.isFlg = isFlg;
}
public java.util.Hashtable getWidthArray() {
return widthArray;
}
public void setWidthArray(java.util.Hashtable widthArray) {
this.widthArray = widthArray;
}
/**
* notNull
*
* @param aStr String
*/
public String notNull(String aStr) {
if(aStr!=null)
return aStr.trim();
else
return "";
}
}
4.定义一个主控类,用于保存分页Grid的页面信息
package BSC.tree.pagetag;
public class CtrPageBean {
private String next="1";
private String last="1";
private String current="1";
private String size="0";
private String max="1";
private String pageSize="0";
public CtrPageBean(String size,String pageSize) {
if(this.getInteger(size)!=0){
if(this.getInteger(pageSize)<0)
this.setPageSize(size);
this.setSize(size);
this.setPageSize(pageSize);
if (this.getInteger(pageSize) > this.getInteger(size)) {
this.setPageSize(size);
}
if (pageSize == "0")
this.setPageSize("1");
int leval = this.getInteger(getSize()) % this.getInteger(this.getPageSize());
int maxv = 0;
if (leval == 0) {
maxv = this.getInteger(getSize()) / this.getInteger(this.getPageSize());
}
else {
maxv = this.getInteger(getSize()) / this.getInteger(this.getPageSize()) +
1;
}
this.setMax("" + maxv);
}
}
public String getMax() {
return max;
}
protected void setMax(String max) {
this.max = max;
}
public String getNext() {
return next;
}
public void setNext(String next) {
this.next = next;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
public String getCurrent() {
return current;
}
public void setCurrent(String current) {
this.current = current;
if(this.getInteger(this.getCurrent())==this.getInteger(this.getMax())){
this.setNext("1");
}
else{
int cur=getInteger(this.current) + 1;
this.setNext(""+cur);
}
if(this.getInteger(this.getCurrent())!=1){
int lastv = getInteger(this.current) - 1;
this.setLast(""+lastv);
}
else
this.setLast("1");
}
public String getSize() {
return size;
}
protected void setSize(String size) {
this.size = size;
}
protected void init(String size){
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public int getInteger(String val){
Integer vals=new Integer(val);
return vals.intValue();
}
}
5.定义一个名叫page_table.tld的tld文件,并将其存放到\WEB-INF目录下内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>PAGETABLE</shortname>
<uri>helloworld</uri>
<info>OUT TABLE</info>
<tag>
<name>ScriptTag</name>
<tagclass>BSC.tree.ScriptTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>index</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>loginIndexSessionNM</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>caption</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>isHidden</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<!--attribute>
<name>isFlush</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute-->
</tag>
<tag>
<name>PageScriptTag</name>
<tagclass>BSC.tree.PageScriptTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>strSQL</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pageSize</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>action</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>style</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>currentSize</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>ctrPageBeanSessionNM</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pageTileBeanSessionNM</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>displayCol</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>loginIndexSessionNM</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>logicIndex</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>databeanNM</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>caption</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>isHidden</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>trStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tdStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>headTrStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>headTdStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tableWidth</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tdWidth</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>urlPara</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>oddTrStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>evenTrStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>database</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
6.在jsp中使用,
<%@ page contentType="text/html; charset=Big5" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/page_table.tld" prefix="pagetab"%>
<%@ page import="BSC.pool.*" %>
<html>
<head>
<title>
login
</title>
<link href="css/wfr_css.css" rel="stylesheet" type="text/css"></head>
<script language="
JavaScript" src="js/PubFun.js" type="text/javascript"> </script>
</head>
<body bgcolor="#ffffff">
<logic:present name="userManageForm">
<bean:write name="userManageForm" property="email"/>
</logic:present>
<logic:notPresent name="userManageForm">
addddddddddd
</logic:notPresent>
<!--bean:write name="userManageForm" property="email"/-->
<%
//以下就是产生分页Grid的代码
String index="1";
index=request.getParameter("index");
if(index==null)
index="1";
%>
<pagetab:PageScriptTag
logicIndex="0,1"
pageSize="10"
isHidden="0,0"
action="TestGrid.jsp"
style="outtable"
currentSize="<%=index%>"
strSQL="select ttid,Type from Trans_Type"
databeanNM="databeanname"
loginIndexSessionNM="loginIndexSessionNM"
caption="县市ID,县市名称"
headTrStyle="text1"
tdWidth="5%,20%"
database="resources.
SQLServerDB"
/>
</body>
</html>
原文转自:http://www.ltesting.net