`

自定义分页标签 pagination tag

 
阅读更多

让翻页变的更简单

 

paginationTag.java

 

 

package com.utils;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import com.constant.Constants;

public class PaginationTag extends BodyTagSupport{

	private static final long serialVersionUID = 3195861338194897318L;

	private String tagName;
	private Integer curPage;
	private Integer totalRowCount;
	public String getTagName() {
		return tagName;
	}
	public void setTagName(String tagName) {
		this.tagName = tagName;
	}
	public Integer getCurPage() {
		return curPage;
	}
	public void setCurPage(Integer curPage) {
		if(curPage==null || "".equals(curPage) || curPage==0){
			curPage = 1;
		}
		this.curPage = curPage;
	}
	
	public Integer getTotalRowCount() {
		return totalRowCount;
	}
	public void setTotalRowCount(Integer totalRowCount) {
		this.totalRowCount = totalRowCount;
	}
	private Integer pageSize = Constants.PAGINATION_PAGESIZE;
	
	private Integer totalPage(){
		Integer totalPage = 0;
		if(totalRowCount>0 && totalRowCount<=pageSize){
			totalPage = 1;
		}else if(totalRowCount>pageSize){
			if(totalRowCount%pageSize>0){
				totalPage = totalRowCount/pageSize+1;
			}else{
				totalPage = totalRowCount/pageSize;
			}
		}
		return totalPage;
	}
		
	private Integer nextPage(){
		Integer nextPage = curPage+1;
		if(nextPage>totalPage()){
			nextPage = totalPage();
		}
		return nextPage;
	}
	
	private Integer prePage(){
		Integer prePage = curPage-1;
		if(prePage<1){
			prePage = 1;
		}
		return prePage;
	}
	
	private Integer getStartRow(Integer goPage){
		Integer startRow = (goPage-1)*pageSize;
		return startRow;
	}
	
	@Override
	public int doStartTag() throws JspException{
		try {
			StringBuffer sb = new StringBuffer();
			sb.append("<div class=\"pagebar\" style=\"line-height:12px;text-align:center;\">");
			if(curPage!=1){
				sb.append("<a href=\"javascript:");
				sb.append(tagName);
				sb.append("(");
				sb.append(getStartRow(prePage()));
				sb.append(",");
				sb.append(prePage());
				sb.append(")\"><span>Previous</span></a>");
			}else{
				sb.append("<span>Previous</span>");
			}
			sb.append(" &lt; ");
			if(curPage-3>=1){
				for(int i=3;i>0;i--){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage-i));
					sb.append(",");
					sb.append(curPage-i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage-i);
					sb.append("</span></a>");
				}
			}else{
				for(int i=1;i<curPage;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(i));
					sb.append(",");
					sb.append(i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(i);
					sb.append("</span></a>");
				}
			}
			sb.append("<span class=\"curPage\">");
			sb.append(curPage);
			sb.append("</span>");
			if(curPage<totalPage()-3){
				for(int i=1;i<4;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage+i));
					sb.append(",");
					sb.append(curPage+i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage+i);
					sb.append("</span></a>");
				}
			}else{
				for(int i=1;i<=totalPage()-curPage;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage+i));
					sb.append(",");
					sb.append(curPage+i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage+i);
					sb.append("</span></a>");
				}
			}
			sb.append(" &gt; ");
			if(curPage.equals(totalPage())){
				sb.append("<span>Next</span>");
			}else{
				sb.append("<a href=\"javascript:");
				sb.append(tagName);
				sb.append("(");
				sb.append(getStartRow(nextPage()));
				sb.append(",");
				sb.append(nextPage());
				sb.append(")\"><span>Next</span></a>");
			}
			sb.append("</div>");
			if(totalRowCount>0){
				pageContext.getOut().write(sb.toString());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return BodyTagSupport.EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doEndTag() throws JspException{
		return BodyTagSupport.EVAL_BODY_INCLUDE;
	}

}

 

myTag.tld

 

<!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.1</jsp-version>
	<short-name>epp</short-name>
	<tag>
		<name>pagination</name>
		<tag-class>com.utils.PaginationTag</tag-class>
		<body-content>Jsp</body-content>
		<attribute>
			<name>tagName</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		<attribute>
			<name>curPage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>totalRowCount</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
	</tag>
</taglib>

 

Js function name should be equal to tagName.

 

function turnPageFunction(startRow,curPage){
	$("#startRow").val(startRow);
	$("#curPage").val(curPage);
	window.document.forms[0].submit();
}
 

jsp invoke

 

<%@ taglib prefix="epp" uri="/WEB-INF/EppTag.tld"%>


<epp:pagination totalRowCount="${totalRow}" tagName="turnPageFunction" curPage="${curPage}"></epp:pagination>

 

action method:

 

private Integer curPage;
private Integer totalRow;

public Integer getCurPage() {
		return curPage;
	}

	public void setCurPage(Integer curPage) {
		this.curPage = curPage;
	}

public Integer getTotalRow() {
		return totalRow;
	}

	public void setTotalRow(Integer totalRow) {
		this.totalRow = totalRow;
	}


public String findPageData(){
		Integer startRow = 0;
		String strStartRow = this.getRequest().getParameter("startRow");
		if(strStartRow!=null && !"".equals(strStartRow)){
			startRow = Integer.parseInt(strStartRow);
		}
		
		totalRow = demoService.countTotalRow();
		list = demoService.findPageData(startRow, startRow+Constants.PAGINATION_PAGESIZE);
		this.getRequest().setAttribute("curPage", curPage);
		return SUCCESS;
	}
 

 

 

分享到:
评论

相关推荐

    jsp自定义分页标签

    本主题将深入探讨“jsp自定义分页标签”,这是一种在网页展示大量数据时非常实用的功能,它可以有效地帮助用户浏览和操作数据。 一、JSP自定义标签基础 JSP自定义标签是JSP技术的一部分,它允许开发者创建自己的...

    java自定义分页标签

    Java自定义分页标签是Java Web开发中一种高效、可复用的方法,它允许开发者创建自己的标签库,用于处理分页逻辑,提高代码的可读性和可维护性。本篇文章将详细探讨如何在Java中实现一个自定义分页标签。 首先,理解...

    很不错的自定义分页标签

    本文将详细讲解如何实现一个很不错的自定义分页标签,以供开发者们参考和使用。 首先,我们要了解分页的基本原理。分页通常涉及到两个主要部分:前端显示和后端数据处理。前端负责展示当前页码、总页数以及翻页链接...

    Java自定义分页标签

    - 假设我们的标签处理类名为`PaginationTag`,TLD文件为`pagination.tld`,那么在JSP中使用如下: ```jsp &lt;%@ taglib prefix="pg" uri="/WEB-INF/tags/pagination.tld" %&gt; ... &lt;pg:pagination current="${...

    mybatis自定义分页标签

    而自定义分页标签是提高开发效率、增强代码可读性和复用性的一种常见手段。本篇将详细介绍如何在MyBatis中实现自定义的JSTL标签来完成分页查询。 首先,我们要理解分页的基本概念。分页是当数据量较大时,为了提高...

    自定义标签分页

    在本例中,"fenyeTag"可能是自定义分页标签库的名字,用于在JSP页面上展示分页链接。 要实现自定义标签,你需要遵循以下步骤: 1. **创建TLD文件**:TLD(Tag Library Descriptor)文件定义了自定义标签的行为、...

    自定义分页标签

    在这个例子中,`mytags:pagination`就是我们的自定义分页标签,`currentPage`、`totalRecords`和`itemsPerPage`是传递给标签的参数。 通过这种方式,我们能够创建一个高度可定制的分页组件,可以适应不同的应用场景...

    Struts2中实现自定义分页标签 --功能扩充

    创建一个继承自`org.apache.struts2.views.jsp.ui.TagSupport`的类,例如`PaginationTag.java`。在这个类中,我们需要定义处理分页所需的各种属性,如每页记录数(pageSize)、总记录数(totalCount)、当前页数...

    一个用于分页的自定义标签

    本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用。 首先,我们要理解什么是JSP自定义标签。在JSP中,自定义标签是通过TLD(Tag Library Descriptor)文件定义的,它允许...

    自定义struts2 分页标签

    本教程将详细介绍如何在Struts2中自定义分页标签。 在传统的网页开发中,分页通常通过服务器端脚本或JavaScript实现,但在Struts2框架中,我们可以创建自定义标签来完成这一任务,使得代码更加模块化和易于维护。...

    java+hibernate+jsp+tld+自定义标签分页

    本项目结合了Java、Hibernate、JSP以及TLD(Tag Library Descriptor)技术,实现了一个高效、易懂且实用的自定义标签分页解决方案。下面我们将详细探讨这些技术以及它们在分页中的应用。 首先,Java作为后端编程...

    自定义JSP分页标签

    而在Java Web开发中,利用JSP(Java Server Pages)技术进行网页开发时,自定义分页标签能够更加灵活高效地实现分页功能。本文将详细介绍如何自定义一个JSP分页标签,并通过具体的代码示例来演示其实现过程。 #### ...

    java自定义标签分页

    在这个“java自定义标签分页”主题中,我们将深入探讨如何利用自定义标签来实现高效且易于维护的分页功能。 首先,自定义标签的定义通常涉及以下组件: 1. TLD(Tag Library Descriptor)文件:这是定义自定义标签...

    自定义标签实现的分页

    1. 创建自定义标签:我们需要创建一个继承自`javax.servlet.jsp.tagext.TagSupport`的类,例如`PaginationTag`。在这个类中,我们可以定义属性如`currentPage`和`pageSize`,用于存储当前页数和每页大小。同时,我们...

    JSP自定义分页标签TAG全过程

    JSP自定义分页标签是一种在Java Server Pages中实现分页功能的自定义标签,它通过TLD文件(标签库描述文件)来定义和描述标签的属性和行为,实现分页显示的功能。以下是关于JSP自定义分页标签全过程的一些详细知识点...

    分页工具条自定义标签

    在Java Web开发中,分页是常见的功能,用于处理...通过这种方式,开发者可以方便地自定义分页样式和逻辑,提升项目的可维护性和可扩展性。在实际项目中,我们可以根据具体需求调整标签属性,以适应各种不同的分页场景。

    自定义标签分页非常简单

    标题"自定义标签分页非常简单"意味着我们将探讨如何通过自定义标签来实现一个简洁且易于使用的分页功能。 自定义标签在JSP 2.0及以上版本中引入,它基于JSP Tag Library(JSTL)规范。自定义标签不是HTML标签,而是...

    jsp自定义标签编写的分页

    在JSP页面中,我们可以这样使用自定义分页标签: ```jsp &lt;%@ taglib prefix="mypagination" uri="/WEB-INF/tlds/pagination.tld" %&gt; &lt;mypagination:pagination recordsPerPage="10" totalRecords="${messageCount}...

Global site tag (gtag.js) - Google Analytics