package cn.pdsu; import java.util.List; /** * 类说明:页码显示效果类 。1:TextModel “第一页 上一页 下一页 最后一页”;2:NumModel “第一页 2 3 4 最后一页”; * * @author 作者: LiuJunGuang * @version 创建时间:2011-11-9 下午04:09:22 */ public class PageModel<T> { /** * 文本类型:形如:“第一页 上一页 下一页 最后一页” */ public static final int TEXT_MODEL = 1; /** * 数字类型:形如:NumModel “第一页 2 3 4 最后一页” */ public static final int NUM_MODEL = 2; /** * 页码显示模型 */ private int model = 1; /** * 页码连接URL,不需要添加页码参数 */ private String url; /** * 页码信息的封装 */ private Page page = null; /** * 模型类型的页码 */ private StringBuffer strHtml = null; /** * 数字类型的页码模型中间数字显示个数,例如:第一页 1 2 3 4 5 最后一页,numCount = 5; 默认显示 5个数字 */ private int numCount = 5; /** * 页码的模式默认的文字类型的样式 * * @param page * 页面信息 * @param url * 页面的url地址 */ public PageModel(Page page, String url) { super(); this.url = url; this.page = page; } /** * 页码的模型 * * @param page * 页面信息 * @param url * 页面的url地址 * @param model * 页码的显示样式 */ public PageModel(Page page, String url, int model) { super(); this.model = model; this.url = url; this.page = page; } /** * 页码的模型 * * @param page * 页面信息 * @param url * 页面的url地址 * @param model * 页码的显示样式 * @param numCount * 数字类型的页码,共显示的个数 */ public PageModel(Page page, String url, int model, int numCount) { super(); this.model = model; this.url = url; this.page = page; this.numCount = numCount; } /** * 返回页面的模型 * * @return */ public String getPageModel() { // 组装页码模型 createURL(); return createModel(); } /** * 构建URL */ private void createURL() { url = url.contains("?") ? url + "&page=" : url + "?page="; } /** * 组装页码模型 */ private String createModel() { strHtml = new StringBuffer(); switch (model) { case TEXT_MODEL:// 文本模型 buildTextModel(); break; case NUM_MODEL:// 数字模型 buildNumModel(); break; default:// 文本模型 buildTextModel(); break; } return strHtml.toString(); } /** * 组件数字类型的页码模型 */ private void buildNumModel() { int currentPage = page.getCurrentPage(); int countPage = page.getCountPage(); strHtml.append( "<table width='100%' border='0' cellspacing='0' cellpadding='0'>") .append("<tr><td height='24' align='center'>"); // 构造格式:第一页 1 2 3 4 5 最后一页 PageIndex pageIndex = PageIndex.getPageIndex(numCount, currentPage, countPage); // 不是第一页时,显示首页 if (currentPage > 1) { strHtml.append("<a href='").append(url) .append("1'>首页</a> "); } if (currentPage <= countPage) { for (int i = pageIndex.getStartIndex(); i <= pageIndex .getEndIndex(); i++) { // 当前页加粗 if (currentPage == i) { strHtml.append("<b>").append(i).append("</b> "); } else { strHtml.append("<a href='").append(url).append(i) .append("'>").append(i).append("</a> "); } } // 不是最后一页显示末页 if (currentPage < countPage) { strHtml.append("<a href='").append(url).append(countPage) .append("'>末页</a>"); } } strHtml.append("</td></tr></table>"); } /** * 组件文本类型的页码 */ private void buildTextModel() { int currentPage = page.getCurrentPage(); int countPage = page.getCountPage(); strHtml.append( "<table width='100%' border='0' cellspacing='0' cellpadding='0'>") .append("<tr> <td height='24' align='center'>当前页数:[") .append(currentPage).append("/").append(countPage) .append("] "); if (currentPage > 1) { strHtml.append("<a href='").append(url).append("1'>首页</a>") .append(" <a href='").append(url) .append(currentPage - 1).append("'>上一页</a>"); } if (currentPage < countPage) { strHtml.append(" <a href='").append(url) .append(currentPage + 1) .append("'>下一页</a> <a href='").append(url) .append(countPage).append("'>末页</a>"); } strHtml.append("</td></tr></table>"); } public List<T> getList() { return page.getList(); } }

taoshen95 LV16
2024年12月16日
asddwh LV13
2023年12月29日
wuge123 LV8
2023年6月12日
1719863922 LV11
2022年6月17日
刚刚vv谭v LV4
2022年1月4日
微信网友_5768552477921280 LV6
2022年1月2日
17771013609 LV4
2021年12月31日
fesdfs LV1
2021年12月20日
3089559272 LV11
2021年12月17日
龙门客栈 LV9
2021年12月16日

taoshen95 LV16
2024年12月16日
时光海 LV2
2024年7月1日
liyan54188 LV2
2024年6月25日
sdaijdiafafon
2024年6月23日
暂无贡献等级
沈从文 LV3
2023年12月31日
asddwh LV13
2023年12月25日
wodewode LV1
2023年12月23日
微信网友_6786215447367680 LV5
2023年12月23日
好哇好哇还是
2023年12月20日
暂无贡献等级
颜菜菜 LV2
2023年12月19日