struts2自定义分页标签

  至今一直在从事web开发,现在有个项目用struts2搭建的,做web嘛,分页是必须的,琢磨着写个通用分页标签一劳永逸,偷偷懒大笑,也在网上看了下他人写的,加上自己的一些理解,终于搞定,拿出来分享下,好了,费话不多说,coding开始:

 

1:在WebRoot\WEB-INF下new一个tld标签文件:

pageTag.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>1.0</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>page_tags</short-name>
 <uri>/page_tags</uri>  
 <display-name>"Pages Tags"</display-name>
 <tag>
 	<name>pages</name>
 	<tag-class>com.page.PageTag</tag-class>
 	<attribute>
 		<!-- 当前页号 -->
 		<name>pageNo</name>
 		<!-- 属性是否为必要的 -->
 		<required>true</required>
 		<!-- 属性值是否动态产生 -->
 		<rtexprvalue>true</rtexprvalue>
 		<!-- 属性的数据类型 -->
 		<type>int</type>
 	</attribute>
 	<attribute>
 		<!-- 总记录数 -->
 		<name>recordCount</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 		<type>int</type>
 	</attribute>
 	<attribute>
 		<!-- 每页显示多少条 -->
 		<name>pageSize</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 		<type>int</type>
 	</attribute>
 	<attribute>
 		<!-- 跳转的Url -->
 		<name>url</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 		<type>java.lang.String</type>
 	</attribute>
 </tag>
</taglib>


2:new一个PageTag类继承TagSupport

PageTag.java

package com.page;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;


public class PageTag extends TagSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private int pageNo;  
	private int recordCount;  
	private int pageSize;  
	private String url; 
	
	
	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
		
		int pageCount = (this.recordCount+this.pageSize-1)/this.pageSize;
		StringBuilder sb = new StringBuilder();
		sb.append("<div class='cutpage' >");
		if(this.recordCount != 0){
			if(this.pageNo > pageCount){
				this.pageNo = pageCount;
			}
			if(this.pageNo < 1){
				this.pageNo = 1;
			}
			HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
			Enumeration e = request.getParameterNames();
			String name = null;
			String value = null;
			while (e.hasMoreElements()) {
				name = (String) e.nextElement();
				value = request.getParameter(name);
				if(name.equals("page")){
					if(value != null && !"".equals(value)){
						this.pageNo = Integer.parseInt(value);
					}else{
						sb.append("<input type='hidden' name=\"").append(name).append("\" value=\"").append(value).append("\"/>");
					}
				}
			}
			if(this.pageNo==1){
				sb.append("<a><span>上一页</span></a>");
			}else{
				sb.append("<a href='"+this.url+"?page = "+(this.pageNo-1)+"'><span>上一页</span></a>");
			}
			int start = 1;
			if(this.pageNo > 4){
				start = this.pageNo - 1;
				sb.append("<a href='"+this.url+"?page = 1'><span>1</span></a>");
				sb.append("<a href='"+this.url+"?page = 2'><span>2</span></a>");
				sb.append("...");
			}
			int end = this.pageNo + 1;
			if (end > pageCount) {
				end = pageCount;
			}
			for (int i = start; i <= end; i++) {
				if (this.pageNo == i){
					sb.append("<a href='javascript:void(0);' class=\"current\">").append("<span>"+i+"</span>").append("</a>");
				}else{
					sb.append("<a href='"+this.url+"?page="+i+"'>").append("<span>"+i+"</span>").append("</a>");
				}
			}
			if (end < pageCount - 2) {
				sb.append("...");
			}
			if (end < pageCount - 1) {
				sb.append("<a href='"+this.url+"?page="+(pageCount - 1)+"'>").append("<span>"+(pageCount - 1)+"</span></a>");
			}
			if (end < pageCount) {
				sb.append("<a href='"+this.url+"?page="+pageCount+"'>").append("<span>"+pageCount+"</span></a>");
			}
			if (this.pageNo == pageCount)
				sb.append("<a><span>下一页 ").append("</a></span>");
			else {
				sb.append("<a href='"+this.url+"?page="+(this.pageNo+1)+"'><span>下一页 </span></a>");
			}
		}
		sb.append("</div>");
		try {
			this.pageContext.getOut().println(sb.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return 0;
	}


	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	public int getRecordCount() {
		return recordCount;
	}
	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public void setUrl(String url) {
		this.url = url;
	}

}


3:Action里面

package com.web;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.common.DaoException;
import com.dao.impl.TUserinfoDAOImpl;
import com.model.UserTypePage;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class UserTypePageAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = -18522325302568049L;

	private TUserinfoDAOImpl tuserinfoDAOImpl;
	private List<UserTypePage> ls;

	private int pageNo=1;
	private int pageSize = 6;
	private int recordCount;   
	private String url; 
	 
	public String userTypeInfo(){
		try {
			......//逻辑就不写了			
		} catch (DaoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return Action.SUCCESS;
	}
	
	
	public TUserinfoDAOImpl getTuserinfoDAOImpl() {
		return tuserinfoDAOImpl;
	}
	public void setTuserinfoDAOImpl(TUserinfoDAOImpl tuserinfoDAOImpl) {
		this.tuserinfoDAOImpl = tuserinfoDAOImpl;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getUrl() {
		return url;
	}
	public void setLs(List<UserTypePage> ls) {
		this.ls = ls;
	}
	public List<UserTypePage> getLs() {
		return ls;
	}
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	public int getPageNo() {
		return pageNo;
	}
	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}
	public int getRecordCount() {
		return recordCount;
	}


	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}


	public int getPageSize() {
		return pageSize;
	}
}


4.JSP页面

头部导入标签文件
<%@ taglib prefix="tag" uri="/page_tags" %>
     ………………
<!-- 引入分页标签 -->
    <div class="page_div">
        <tag:pages pageSize="${pageSize}" pageNo="${pageNo}" url="userHXPageAction.do" recordCount="${recordCount}"></tag:pages>
    </div>
<!-- 分页标签结束 -->


 

搞定!注释加的少,相信大家这个也容易看懂……

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值