作項目用的是springBoot+beetl。有分頁功能,在網上找了不少都不行,各類坑。本身寫了一套在此記錄一下,方便下次查看。html
廢話少說,直奔主題java
1.配置beetl.properties 。pageTag要與前臺頁面對應,「=」右側是本身建PageTag的包名和類名spring
TAG.pageTag=com.shenhua.tag.PageTag
2.寫自定義分頁標籤。 注:查找beetl資料都有init()方法,可是在這裏屏蔽以後不受影響。故此屏蔽了。app
package com.shenhua.tag; import org.beetl.core.GeneralVarTagBinding; import java.io.IOException; public class PageTag extends GeneralVarTagBinding { private int totalpage; //總頁數 private int currentpage; //當前頁 private String pageurl; //路徑 // @Override // public void init(Context ctx, Object[] args, Statement st) { // super.init(ctx, args, st); // Map<String, Integer> pageMap = new HashMap<>(); // Map<String, Integer> val = null; // try { // val = (Map<String, Integer>) getAttributeValue("val"); // } catch (Exception e) { // } // if (val != null) { // pageMap.putAll(val); // } // if (pageMap.get("totalpage") != null) { // totalpage = pageMap.get("totalpage"); // System.out.println("xxxxxxx=="+totalpage); // } // if (pageMap.get("currentpage") != null) { // currentpage = pageMap.get("currentpage"); // } // System.out.println("xxxxxxx111=="+totalpage); // System.out.println("xxxxxxx222=="+currentpage); // if (currentpage < 1) currentpage = 1; // // // } @Override public void render() { pageurl = (String) this.getAttributeValue("pageurl"); currentpage = Integer.parseInt(this.getAttributeValue("currentpage").toString()); totalpage = Integer.parseInt(this.getAttributeValue("totalpage").toString()); StringBuilder jpql = new StringBuilder(); int next = currentpage + 1;//下一頁 int pre = currentpage - 1;//上一頁 if (pre <= 0) {pre = 1; } if (totalpage<=next){next= totalpage;} //上一頁 jpql.append("<li><a href='").append(pageurl).append(pre).append(".html' ><</a></li>"); //根據實際狀況顯示或隱藏 if (totalpage < 8) { for (int i = 1; i <= totalpage; i++) { //等於當前頁,變色 if (currentpage == i) { jpql.append("<li><a href='").append(pageurl).append(i).append(".html' class=\"on\" > ").append(i).append("</a></li>"); } else { jpql.append("<li><a href='").append(pageurl).append(i).append(".html'> ").append(i).append("</a></li>"); } } } else { int maxNum =currentpage+4; int minNum = currentpage - 4; if (maxNum > totalpage) { maxNum = totalpage; } if (minNum < 1) { minNum = 1; } for (int i = minNum; i <= maxNum; i++) { if (currentpage == i) { jpql.append("<li><a href='").append(pageurl).append(i).append(".html' class=\"on\" > ").append(i).append("</a></li>"); } else { jpql.append("<li><a href='").append(pageurl).append(i).append(".html' > ").append(i).append("</a></li>"); } } } jpql.append("<li><a href='").append(pageurl).append(next).append(".html' >></a></li>"); try{ ctx.byteWriter.writeString(jpql.toString()); this.doBodyRender(); }catch (IOException e){ } } }
3.html頁面 在頁面中引用標籤。我這裏須要傳3個參數:currentpage當前頁,totalpage總頁數 ,pageurl跳轉路徑。ide
我這裏完整的跳轉路徑是 http://www.xxx.com/new/0/3.html 第一個數字是新聞分類id,0表示查詢所有,不按分類; 第二個數字表示第幾頁ui
<ul class="page-u clearfix" id="pageTag"> <#pageTag currentpage="${page.currentpage}" totalpage="${page.totalpage}" pageurl="/news/${typeid}/"></#pageTag> </ul>
最終效果:this