研究:Liferay研究(四)Liferay中进行分页-----------------假分页之一

分页大家都不陌生了,分页分为真分页和假分页,真分页原理比较简单,拿Mysql来说的话单纯的一句sql语句末尾带上 limit "+(currentPage-1)*lineSize+","+lineSize 这句话就可以进行真分页查询了,但是工作要求的关系,我接触不到项目里面最底层的数据库语言操作,只是给了一个单纯的方法返回一堆数据,那只能暂时用假分页代替了.

因为分页部分可以循环再用,所以就把分页部分抽取出来了,当做一个工具类使用.代码如下:

package org.lxh.action.pagesplit;



import java.util.ArrayList;

import java.util.List;



import org.lxh.bean.User;



public class PageUtil {

	// // 页面总数

	// private int total;

	// // 当前第几页

	// private int curpage;

	// // 每页显示多少行

	// private int linsize;

	// // 要分多少页

	// private int spiltpage;



	// 是否有上一页

	public static boolean isfirst(int curpage) {

		return curpage != 1;



	}



	// 是否有下一页

	public static boolean isnext(int curpage, int total) {

		return curpage != total;



	}



	// 是否首页

	public static boolean ishomepage(int curpage) {

		return curpage == 1;

	}



	// 是否末页

	public static boolean islast(int curpage, int spiltpage) {

		return curpage == spiltpage;

	}



	// 需要分多少页

	public static int spiltPage(int total, int linsize) {

		return (total + linsize - 1) / linsize;

	}



	// 计算当前页开始记录 假分页中begin数

	public static int countOffset(final int pageSize, final int currentPage) {

		final int offset = pageSize * (currentPage - 1);

		return offset;

	}



	// 计算假分页中end的结束记录数

	public static int countTotalPage(final int pageSize, final int begin) {

		final int totalPagData = begin + pageSize;



		return totalPagData;

	}



	// 计算当前页 防止一直往下加

	public static int countCurrentPage(int curpage) {

		final int page = (curpage == 0 ? 1 : curpage);

		return page;

	}



	// 可改动分页取数方法

	public static List splitPageByUser(List list, int pageSize,

			int curpage) {

		System.out.println("pageSize--------------------->" + pageSize);

		System.out.println("list==>"+list.size());

		int begin = countOffset(pageSize, curpage);

		System.out.println("begin----------->" + begin);



		int end = countTotalPage(pageSize, begin);

		System.out.println("end----------->" + end);

		List temp = new ArrayList();

		for (int i = begin; i < end; i++) {

			System.out.println("i-------------------"+i);

			if (i <= list.size() - 1) {

				User user= new User ();

				user= (User ) list.get(i);

				if (user== null)

					continue;

				else

					temp.add(user);

			}

		}

		return temp;

	}



}

 

类中splitPageByListAssetVo方法是为了对接对方项目所返回的值而设置的,可以进行更改,而begin是根据页面当前页返回的数值进行计算,而末尾是begin+上第二次需要显示的数据,但是因为是从list中读取,很容易会出现数组越界的错误.所以必须要对list取数据进行判断.

你可能感兴趣的:(liferay)