今天由于项目的需要,做了个公用的分页。是结合velocity做的。下面是一些源码:下面的我的思路做了个测试

/**
 * 
 */
package ff;

/**
 * @author Administrator
 * 
 */
public class Test {

	/**
	 * 
	 */
	public Test() {
		// TODO 自动生成构造函数存根
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根

		int pageNo = 20;
		int liststep = 6;// 最多显示分页页数
		int z = 1;
		for (int z = 1; z <= pageNo; z++) {
			int pages = z;// 默认显示第一页
			if (pages < 1) {
				pages = 1;// 如果分页变量小于1,则将分页变量设为1
			}
			int listbegin = (pages - (int) Math.ceil((double) liststep / 2))<1?1:(pages - (int) Math.ceil((double) liststep / 2));// 从第几页开始显示分页信息
			
			int listend = pages + liststep / 2;// 分页信息显示到第几页
			if (listend > pageNo) {
				listend = pageNo + 1;
			}

			System.out.println("=======================================");
			System.out.println("第"+z+"页");
			// <显示上一页
			if (pages > 1) {
				System.out.print("[上一页]");
			}
			//第一页控制
			if(listbegin>1){
				System.out.print("[1]******");
				
			}
			// <显示分页码
			//System.out.println(listend);
			for (int i = listbegin; i < listend; i++) {
				
				if(i>=pageNo)break;
				if (i != pages) {// 如果i不等于当前页
					System.out.print("[" + i + "]");
				} else {
					System.out.print("[_" + i + "_]");
				}
			}
			
			//最后一页控制
			if(listend<pageNo)
				System.out.print("******["+pageNo+"]");
			else if(pageNo==pages)
				System.out.print("[_"+pageNo+"_]");
			else
				System.out.print("["+pageNo+"]");
			
			//下-页控制
			if (pages != pageNo) {
				System.out.print("[下一页]");
			}
			
			
			System.out.println("");
			System.out.println("");

		}

	}

}

 下面是我的模板里的velocity代码

<DIV class=pagination>
#set($pageNo=15) ##当前页码 
#set($pageSum=20) ##总页数 
#set($liststep = 6) 			   ##显示分页页数
					
#if($pageNo < 1)
$pageNo = 1 	##如果分页变量小于1,则将分页变量设为1
#end
					
#set($bar = $liststep/2)
					
					#if(($pageNo - $bar) < 1)
					#set($listbegin = 1)
					#else
					#set($listbegin = $pageNo - $bar)   ##分页信息开始显示到第几页
					#end
					
					#set($listend = $pageNo + $bar)     ##分页信息结束显示到第几页
					
					#if($listend > $pageSum)
					#set($listend = $pageSum)           ##分页信息结束显示超过了总页数处理 
					#end
					
					第$pageNo页							##显示当前页
					
					#if($pageNo > 1)					##显示上一页处理
					<a title="上一页" href="http://127.0.0.1:8080/FIVIPvip/sys/menu.do?method=menu5&pageNo=$paginator.getPrevious()">上一页</a>
					#end
					#if($listbegin > 1)					##第一页控制
					<A href="http://www.javaeye.com/blogs?page=1" rel=start>1</A><SPAN class=gap>…</SPAN>
					#end
					
					
					#foreach($i in [$listbegin..$listend])
					##if($i <= $pageSum)				##分页码的显示
						#if($i != $pageNo)
						<A href="http://127.0.0.1:8080/FIVIPvip/sys/menu.do?method=menu5&pageNo=$i" rel=start>$i</A>
						#else
						<SPAN class=current>$i</SPAN>
						#end
					##end
					
					#end
					
					#if($listend < $pageSum)			##最后一页的处理
					<SPAN class=gap>…</SPAN><A href="http://www.javaeye.com/blogs?page=$pageSum" rel=start>$pageSum</A>
					
					#end
					#if($pageNo != $pageSum)		    ##显示下一页处理
					<a title="上一页"
							href="http://127.0.0.1:8080/FIVIPvip/sys/menu.do?method=menu5&pageNo=$paginator.getNext()">下一页</a>
					#end
					</div>

 下面是效果:

 

评论
laoliu.org 2008-06-13
这个问题是一直有,但是又没有一个公认的好办法的问题。只能结合自己的项目选择某种方案了。
fivipwu 2008-06-12
发表评论

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

fivipwu
搜索本博客
我的相册
最近加入圈子
最新评论