基於 Struts 2 組件架構實現的通用分頁標簽 <tangs:pages>,支援文本/數字主題、額外查詢參數保持、CSS 樣式自定義。包含 TLD 定義、Pages 邏輯組件、PageTag 標簽類、Action 數據準備、PageConfig 分頁工具類完整代碼。
pagination.tld:標簽庫描述符,定義屬性 pageNo、total、includes、styleClass、theme。Pages.java:繼承 Component,start(Writer) 生成分頁 HTML,從 ValueStack 取值、拼接 URL 參數、輸出首頁/上頁/下頁/末頁/總頁/當前頁。PageTag.java:繼承 ComponentTagSupport,參數注入 Pages 組件。PageConfig.java:封裝總記錄數→總頁數換算、每頁條數配置。<%@ taglib prefix="tangs" uri="/WEB-INF/pagination.tld" %>
<tangs:pages pageNo="pageNo" total="total" theme="text"/>
private Integer total;
private Integer pageNo = 1;
public String listAllHotNews() {
pageConfig.setAllRecordNum(dao.recordCount());
total = pageConfig.getAllPageNum();
int start = pageConfig.getPerRecordNum() * (pageNo - 1);
hotNewsList = dao.listAllNews(start, pageConfig.getPerRecordNum());
return SUCCESS;
}
includes 參數解析僅支援基本類型,建議擴展支援任意對象 toString() 或 JSON 序列化。pageNo 越界修正、total=0 空數據友好提示。PageHelper (MyBatis) 或 Spring Data Pageable 統一分頁抽象,減少手工計算。