(1)
扩展:org.apache.struts2.views.jsp.ComponentTagSupport
一个扩展类 ExtTag
public class ExtTag extends ComponentTagSupport{ /** * 样式 */ protected String theme; /** * id */ protected String id; public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) { return null; } }
分页标签
public class PageTag extends ExtTag{ /** * 每页大小 */ private String pagesize; /** * 总记录数 */ private String total; /** * 当前页 */ private String currentpage; /** * url */ private String url; /** *url类别 */ private String urlType; /** * 单位名称 */ private String unit; @Override public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) { super.populateParams(); return new Page(arg0); } /** * 传递参数 */ protected void populateParams() { super.populateParams(); Page page = (Page)component; page.setCurrentpage(currentpage); page.setId(id); page.setPagesize(pagesize); page.setTheme(theme); page.setTotal(total); page.setUrl(url); page.setUrlType(urlType); page.setUnit(unit); } public String getPagesize() { return pagesize; } public void setPagesize(String pagesize) { this.pagesize = pagesize; } public String getTotal() { return total; } public void setTotal(String total) { this.total = total; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUrlType() { return urlType; } public void setUrlType(String urlType) { this.urlType = urlType; } public String getCurrentpage() { return currentpage; } public void setCurrentpage(String currentpage) { this.currentpage = currentpage; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; } }
(2)
扩展控件:org.apache.struts2.components.Component
public class ExtComponent extends Component{ public ExtComponent(ValueStack arg0) { super(arg0); } /** * 样式 */ protected String theme; /** * id */ protected String id; public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
分页控件
public class Page extends ExtComponent{ /** * 每页大小 */ private String pagesize; /** * 总记录数 */ private String total; /** * 当前页 */ private String currentpage; /** * url */ private String url; /** *url类别 */ private String urlType; /** * @param stack */ /** * 单位名称 */ private String unit; public Page(ValueStack arg0) { super(arg0); } /** * */ public boolean start(Writer writer) { try { StringBuffer html = new StringBuffer(); int _pagesize = 15; if (!CheckUtil.isNullOrEmpty(pagesize)) { _pagesize = StringUtil.parsetoInt(pagesize, 15); } int _total = StringUtil.parsetoInt(total, 0); int _currentpage = StringUtil.parsetoInt(currentpage, 1); if (_currentpage < 1) { _currentpage = 1; } int _totalPage = (int)Math.ceil(_total * 1.0f/_pagesize); if (CheckUtil.isNullOrEmpty(unit)) { unit = "条"; } html.append("<div class=\"fer_pager"); if (!CheckUtil.isNullOrEmpty(theme)) { html.append(" " + theme); } html.append("\" "); if (!CheckUtil.isNullOrEmpty(id)) { html.append(" id=\"" + id + "\""); } html.append(">"); html.append("<ul class=\"kptturnpage pagerpanel\">"); html.append("<li class=\"ntotal\">当前第<i class=\"currentpage\">" + _currentpage + "</i>页/共<i>" + _totalPage + "</i>页 每页<i>" + _pagesize + "</i>" + unit + "/共<i class=\"totalNum\">" + _total +"</i>" + unit + "</li>"); if (_totalPage > 0) { if (_currentpage <= 1){ html.append("<li class=\"nfirst\"><a title=\"第一页\"></a></li>"); html.append("<li class=\"nprevior\"><a title=\"上一页\"></a></li>"); } else { html.append("<li class=\"first\"><a " + go("第一页", 1, url)+ "></a></li>"); int _previosPage = _currentpage - 1 > 0? (_currentpage - 1):1; html.append("<li class=\"previor\"><a " + go("上一页", _previosPage, url)+ "></a></li>"); } if (_currentpage >= _totalPage) { html.append("<li class=\"nnext\"><a title=\"下一页\" href=\"javascript:void(0);\"></a></li>"); html.append("<li class=\"nlast\"><a title=\"末页\" href=\"javascript:void(0);\"></a></li>"); } else { int _nextPage = _currentpage + 1 <= _totalPage? (_currentpage + 1): _totalPage; html.append("<li class=\"next\"><a " + go("下一页", _nextPage, url)+ "></a></li>"); html.append("<li class=\"last\"><a " + go("末页", _totalPage, url)+ "></a></li>"); } } html.append("</ul></div>"); writer.write(html.toString()); } catch (Exception e) { e.printStackTrace(); } return true; } /** * 跳转到哪一页 */ private String go(String title, int page,String url){ StringBuffer sb = new StringBuffer(); sb.append(" title=\"" + title + "\" "); if (CheckUtil.isNullOrEmpty(url)) { sb.append(" href=\"javascript:void(0);\" "); sb.append(" onclick=\"PAS.page.go(" + page+")\" "); } else { sb.append(" href=\""); sb.append(url); if (url.indexOf('?') > -1) { sb.append("&"); } else { sb.append("?"); } sb.append("page=" + page); sb.append("\""); } return sb.toString(); } public String getPagesize() { return pagesize; } public void setPagesize(String pagesize) { this.pagesize = pagesize; } public String getTotal() { return total; } public void setTotal(String total) { this.total = total; } public String getCurrentpage() { return currentpage; } public void setCurrentpage(String currentpage) { this.currentpage = currentpage; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUrlType() { return urlType; } public void setUrlType(String urlType) { this.urlType = urlType; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; } }
(3)
标签tld描述
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>2.2.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>ext</short-name> <uri>/ext-tages</uri> <display-name>"Ext Tags"</display-name> <!-- 分页标签 --> <tag> <name>page</name> <tag-class>***.PageTag</tag-class> <body-content>empty</body-content> <attribute> <name>pagesize</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>total</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>currentpage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>url</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>urlType</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>id</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
(4)
页面调用
<%@taglib uri="/WEB-INF/tags/ext-tags.tld" prefix="ext" %> <ext:page total="${total}" currentpage="${page}" pagesize="${pagesize}"/>