1 。 开发一个page主类,这里列出完整代码
package com.sap.bctracking.common;
import java.util.*;
public class Page {
public String action ;
protected int pageCount ;
protected int curpage ;
protected List paramName ;
protected List paramValue ;
protected String projectName = Constants.PROJECT_NAME;//指定项目名称,这里因为一个项目名称是固定的,所以用一个常量指定
protected String form ;
protected int totalRows ;
public String getForm() {
return form;
}
public void setForm(String form) { //设定form
this.form = form;
}
public Page(){
paramName = new ArrayList() ;
paramValue = new ArrayList() ;}
@SuppressWarnings("unchecked")
public void setParam(String paramName,String paramValue){//设定分页需保留的查询参数
this.paramName.add(paramName) ;
this.paramValue.add(paramValue) ;
}
protected boolean isFirst(){//内部函数,判断是否第一页
if(this.curpage==1) return true ;
else return false ;
}
protected boolean isLast(){//内部函数,判断是否最后一页
if(this.curpage==pageCount) return true ;
else return false ;
}
protected String generateAction(int page){//生成action,带参数
String action_ = this.getAction() ;
String pjN = this.projectName ;
List pn = this.paramName ;
List pv = this.paramValue ;
String paramString = "" ;
for(int i=0 ;i< (pn==null?0:pn.size()) ;i++){
String pnS = (String)pn.get(i) ;
String pvS = (String)pv.get(i) ;
if(pnS==null||pvS==null||"".equals(pnS)||"".equals(pvS)) continue ;
if(!paramString.equals(""))
paramString = paramString +"&"+pnS+"="+pvS ;
else paramString = pnS+"="+pvS ;
}
if("".equals(paramString))
action_ = "/"+pjN+"/"+action_ + "?curpage="+page ;
else
action_ = "/"+pjN+"/"+action_ + "?curpage="+page +"&" + paramString ;
return action_ ;
}
//生成action,无参数
protected String generateAction(){
String action_ = this.getAction() ;
String pjN = this.projectName ;
action_ = "/"+pjN+"/"+action_ ;
return action_ ;
}
public String getPageToolBar(){ //得到菜单工具条
if(pageCount==0){
return "No note founded!" ;
}
StringBuffer ptb = new StringBuffer() ;
ptb.append("<table>");
ptb.append("<tr>");
ptb.append("<td>");
if(isFirst()){//如果第一页,显示文本
ptb.append("First " );
ptb.append("Previous " );
}else{
ptb.append("<a style='cursor:hand' οnclick=/"goHSubmitPage('"+this.generateAction(1)+"')/">First</a> " );//产生第一页地链接
ptb.append("<a style='cursor:hand' οnclick=/"goHSubmitPage('"+this.generateAction(curpage-1)+"')/">Previous</a> " );//产生前一页地链接curpage-1
}
if(isLast()){//如果最后一页,显示文本
ptb.append("Next " );
ptb.append("Last " );
}else{
ptb.append("<a style='cursor:hand' οnclick=/"goHSubmitPage('"+this.generateAction(curpage+1)+"')/">Next</a> " );//产生下一页地链接curpage+1
ptb.append("<a style='cursor:hand' οnclick=/"goHSubmitPage('"+this.generateAction(pageCount)+"')/">Last</a> " );//产生最后一页地链接
}
ptb.append(pageCount+"/"+ totalRows);
ptb.append("</td>");
ptb.append("<td align='right'>");
ptb.append("<input type='text' size=2 name='curpage' οnblur='if(validatePageForm(this))goSubmitPage(this.value);' value='"+this.getCurpage()+"'/>" );
ptb.append("</td>");
ptb.append("</tr>");
ptb.append("</table>");
ptb.append(" <script type='text/javascript'>" );
ptb.append(" function validatePageForm(event){" );
ptb.append(" var curpage_ = event.value ;" );
ptb.append(" var pagecount_ = '"+pageCount+"' ;" );
ptb.append(" if(isNaN(curpage_)){" );
ptb.append(" alert('Input must be a number.');") ; //当输入字符不对时,弹出。
ptb.append(" return false ;") ;
ptb.append(" }" );
//当输入的页号不存在时,弹出。
ptb.append(" if(parseInt(curpage_)>parseInt(pagecount_)||parseInt(curpage_)<=0){" );
ptb.append(" alert('The page does not exist!') ;") ;
ptb.append(" return false ;" );
ptb.append(" }" );
ptb.append(" return true ;" );
ptb.append(" }" );
ptb.append("</script>" );
//
ptb.append(" <script type='text/javascript'>" );
ptb.append(" function goHSubmitPage(action){" );
ptb.append( "document.all."+form+".action=action" +";") ;
ptb.append("document.all."+form+".submit()" +";" );
ptb.append(" }" );
//--------------
ptb.append(" function goSubmitPage(event){" );
ptb.append( "document.all."+form+".action='" + this.generateAction() + "?curpage='+event;");
ptb.append("document.all."+form+".submit()" +";") ;
ptb.append(" }") ;
ptb.append("</script>") ;
return ptb.toString() ;
}
public void clear(){
pageCount = 0 ;
curpage = 0 ;
paramName.clear() ;
paramValue.clear() ;
}
public String getAction() {
return action;
}
public void setAction(String action) {//设定分页时提交的action
this.action = action;
}
public int getCurpage() {
return curpage;
}
public void setCurpage(int curpage) {//设定当前页
this.curpage = curpage;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {//设定总页数,根据传进来的总行数
totalRows = pageCount ;
int pageSize = Constants.PAGE_SIZE ; //从外部得到每页大小(显示行数,可以通过改变PAGE_SIZE 设定)
int a = pageCount%pageSize ;
if(a==0)this.pageCount = pageCount/pageSize;
else this.pageCount = pageCount/pageSize+1;
}
}
这里分页主类完成了,当然显示风格可以在 getPageToolBar(){ 改动
2。 在action里面调用
page.setPageCount(pageCount) ; //设定总纪录数
page.setCurpage(i_curpage) ; //设定当前页,通过"?curpage="+page ;
方式传到了页面
page.setAction("a1sPvt_queryPage.do") ;//设定action
page.setForm("a1sPvtForm") ; //设定form
//设定参数
page.setParam("id",id) ;
page.setParam("techName",techname) ;
page.setParam("description",description) ;
page.setParam("contentType",contenttype) ;
page.setParam("path1",path1);
page.setParam("path2",path2);
page.setParam("path3",path3);
page.setParam("path4",path4);
page.setParam("path5",path5);
//得到工具条
String toolBar = page.getPageToolBar() ;
request.setAttribute("toolBar",toolBar) ;
3.jsp中调用
${toolBar}即可