java分页导航生成工具

简介: 网上流传的一些java生成分页导航工具都是有那么些bug,抽空自己写了个,如果发现问题请联系我; 顺便利用这种思路写了个java分页导航生成工具 看看效果图 /*...

网上流传的一些java生成分页导航工具都是有那么些bug,抽空自己写了个,如果发现问题请联系我;

顺便利用这种思路写了个java分页导航生成工具


看看效果图




/**
 * 分页导航生成工具类
 * 
 * @author shadow
 * 
 */
public class NavUtils {

	private static final int show_ = 10;

	private static final int sep_ = show_ / 2;

	private static final int split_ = sep_ / 2;

	public static String build(int offset, int limit, int total) {

		int count = total % limit == 0 ? total / limit : total / limit + 1;

		StringBuffer buffer = new StringBuffer();

		buffer.append("<span class='count_result'>共 " + count + " 页 " + total + " 条记录 </span>");

		// 判断是否显示上页
		if (offset > 1) {
			int prev = offset - 1;
			buffer.append(getNormalPart("上页", prev, limit));
		}

		// 页数不超过限制的情况
		if (count <= show_)
			buffer.append(getPart(1, count, offset, limit));

		// 页数大于限制的情况

		if (count > show_) {
			if (offset <= sep_) {
				buffer.append(getPart(1, sep_ + split_, offset, limit));
				buffer.append(getEllipsis("...")).append(getNormalPart(String.valueOf(count), count, limit));
			} else if (offset > (count - sep_)) {
				buffer.append(getNormalPart(String.valueOf(1), 1, limit)).append(getEllipsis("..."));
				buffer.append(getPart(count - sep_ - 1, count, offset, limit));
			} else {
				buffer.append(getNormalPart(String.valueOf(1), 1, limit)).append(getEllipsis("..."));
				buffer.append(getPart(offset - split_ - 1, offset + split_ + 1, offset, limit));
				buffer.append(getEllipsis("...")).append(getNormalPart(String.valueOf(count), count, limit));
			}
		}

		// 判断是否显示下页
		if (offset < count) {
			int next = offset + 1;
			buffer.append(getNormalPart("下页", next, limit));
		}

		return buffer.toString();

	}

	// 一般按钮
	private static StringBuffer getNormalPart(String content, int offset, int limit) {
		StringBuffer buffer = new StringBuffer();
		buffer.append("<a href='javascript:void(0);' ").append("onclick='pageClick(").append(offset).append(",").append(limit).append(
				");'").append("'>").append(content).append("</a>");
		return buffer;
	}

	// 拼接中间部分
	private static StringBuffer getPart(int begin, int end, int offset, int limit) {
		StringBuffer buffer = new StringBuffer();
		for (int i = begin; i <= end; i++) {
			if (offset == i)
				buffer.append(getSelectedPart(String.valueOf(i), i));
			else
				buffer.append(getNormalPart(String.valueOf(i), i, limit));
		}
		return buffer;
	}

	// 选中按钮
	private static StringBuffer getSelectedPart(String content, Integer value) {
		StringBuffer buffer = new StringBuffer();
		buffer.append("<a href='javascript:void(0);'").append("' class='current'>").append(content).append("</a>");
		return buffer;
	}

	// 省略部分
	private static StringBuffer getEllipsis(String content) {
		StringBuffer buffer = new StringBuffer();
		buffer.append("<a href='javascript:void(0);'>").append(content).append("</a>");
		return buffer;
	}


怎么使用呢?看我下面的使用方法(参数vo是继承Page类)

/**
 * 分页参数对象
 * 
 * @author shadow
 * @email 124010356@qq.com
 * @create 2012.04.28
 */
@SuppressWarnings("serial")
public class Page<T> implements Serializable {

	private Integer offset = 1; // 索引值
	private Integer limit = 10; // 显示数
	private Integer total = 0; // 记录数

	private Integer index;

	private String navigation; // 分页导航

	private List<T> list; // 分页数据

	public Integer getLimit() {
		return limit;
	}

	public void setLimit(Integer limit) {
		this.limit = limit;
	}

	public Integer getCount() {
		return total % limit == 0 ? total / limit : total / limit + 1;
	}

	public Integer getTotal() {
		return total;
	}

	public void setTotal(Integer total) {
		this.total = total;
	}

	public Integer getOffset() {
		int count = getCount();
		if (offset > count)
			offset = count;
		if (offset < 1)
			offset = 1;
		return offset;
	}

	public void setIndex(Integer index) {
		this.index = index;
	}

	public Integer getIndex() {
		if (offset < 1)
			offset = 1;
		index = (offset - 1) * limit;
		return index;
	}

	public void setOffset(Integer offset) {
		this.offset = offset;
	}

	public String getNavigation() {
		return navigation;
	}

	public void setNavigation(String navigation) {
		this.navigation = navigation;
	}

	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

}


@Override
	public Result page(AdminUserVo vo) {
		Result result = getInstance();
		try {
			vo.setTotal(dao.page4total(vo));
			List<AdminUser> models = dao.page4list(vo);
			vo.setList(models);
			vo.setNavigation(NavUtils.build(vo.getOffset(), vo.getLimit(), vo.getCount()));
			result.setSuccess(true).setValue(vo);
		} catch (Exception e) {
			result.setException(new MVCException(e));
		}
		return result;
	}


最后页面增加一个div存放page.navigation这个字符变成html标签即可,以及在页面增加pageClick的js函数作为回调响应请求,相信大家都懂了吧...thx


目录
相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
85 9
|
3月前
|
监控 Java 测试技术
Java开发现在比较缺少什么工具?
【10月更文挑战第15天】Java开发现在比较缺少什么工具?
41 1
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
152 83
|
10天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
67 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
67 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
62 26
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
59 24
|
2月前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
2月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
59 5
|
2月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
127 5
下一篇
开通oss服务