文档章节

自定义分页标签

black_lxf_720
 black_lxf_720
发布于 2016/01/28 09:48
字数 628
阅读 27
收藏 2
public class PageTag extends TagSupport {
 private static final long serialVersionUID = -6295188152350309742L; 
 //起到与jsp页面之间的通讯作用,set方法可以将jsp页面的pageContext对象传递给标签处理器
 private PageContext pageContext;
 // 当前页
 private Integer pageNum;
 // 每页的数量
 private Integer pageSize;
 // 总记录数
 private Integer total;
 // 总页数
 private Integer pages;
 private String seachForm;
 private String paramEncoding = "UTF-8";
 /**
  * page bean的属性名
  */
 private String pageBeanName;
 public String getPageBeanName() {
  return pageBeanName;
 }
 public void setPageBeanName(String pageBeanName) {
  this.pageBeanName = pageBeanName;
 }
 public Integer getPageNum() {
  return pageNum;
 }
 public void setPageNum(Integer pageNum) {
  this.pageNum = pageNum;
 }
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(Integer pageSize) {
  this.pageSize = pageSize;
 }
 public long getTotal() {
  return total;
 }
 public void setTotal(Integer total) {
  this.total = total;
 }
 public Integer getPages() {
  return pages;
 }
 public void setPages(Integer pages) {
  this.pages = pages;
 }
 public String getSeachForm() {
  return seachForm;
 }
 public void setSeachForm(String seachForm) {
  this.seachForm = seachForm;
 }
 public String getParamEncoding() {
  return paramEncoding;
 }
 public void setParamEncoding(String paramEncoding) {
  this.paramEncoding = paramEncoding;
 }
 
 public PageContext getPageContext() {
  return pageContext;
 }
 
 public void setPageContext(PageContext pageContext) {
  this.pageContext = pageContext;
 }
 @Override
 public int doStartTag() throws JspException {
  if (pageBeanName == null)
   pageBeanName = "pagination";
  Pagination pagination = (Pagination) pageContext.getRequest().getAttribute(pageBeanName);
  if (pagination != null) {
   pageNum = pagination.getPageNum();
   pages = pagination.getTotalPage();
  }
  return 0;
 }
 @Override
 public int doEndTag() throws JspException {
  JspWriter out = pageContext.getOut();
  try {
   out.write(buildPage());
  } catch (IOException e) {
   e.printStackTrace();
   throw new RuntimeException(e);
  }
  return 0;
 }
 /**
  * @Title: buildPage 
  * @Description:创建分页
  * @return 
  * @author 
  * @date 2016年1月22日
  */
 private String buildPage() {
  if (pages == 1) {
   return "";
  }
  int start = 0, end = 10;
  if (pageNum >= 10 || (pageNum > 5 && pages > 10))
   start = pageNum - 5;
  if (pages > pageNum + 5)
   end = pageNum + 5;
  else
   end = pages;
  StringBuffer sb = new StringBuffer();
  sb.append("<nav class=\"pull-right pull-right-1\">");
  sb.append("<ul class=\"pagination\">");
  if (pageNum > 1)
   sb.append("<li class=\"previous\"><a href=\"javascript:void(0)\" onclick=" + getPageMethod(pageNum - 1) + ">上一页</a></li>");
  if (start > 0)
   sb.append("<li class='nomal'  ><a href='javascript:void(0)' onclick=" + getPageMethod(1) + " >" + 1 + "</a></li>");
  for (int i = start; i < end; i++) {
   if ((i + 1) == pageNum)
    sb.append("<li class='active'><a href='javascript:void(0)' onclick=" + getPageMethod(i + 1) + " >" + (i + 1) + "</a></li>");
   else
    sb.append("<li class='nomal'><a href='javascript:void(0)' onclick=" + getPageMethod(i + 1) + ">" + (i + 1) + "</a></li>");
  }
  if (pages > 10 && pageNum < pages - 4)
   sb.append("<li class='nomal'><a href='javascript:void(0)' onclick=" + getPageMethod(pages) + ">" + pages + "</a></li>");
  if (pageNum != pages && pages != 0)
   sb.append("<li class=\"next\"><a href=\"javascript:void(0)\" onclick=" + getPageMethod(pageNum + 1) + ">下一页</a></li>");
  sb.append("</ul>");
  sb.append("</nav>");
  return sb.toString();
 }
 /**
  * @Title: getPageMethod 
  * @Description:构建分页的方法名
  * @param pageNum
  * @return 
  * @author 
  * @date 2016年1月22日
  */
 private String getPageMethod(int pageNum) {
  return "\"pageJunmp('" + seachForm + "'," + pageNum + ",'" + pageBeanName + "')\"";
 }
}
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
    <description>bootcss3 分页</description>
    <tlib-version>1.0</tlib-version>
    <short-name>page</short-name>
    <uri>http://mycompany.com/tag/page</uri>
    <tag>
        <name>pager</name>
        <tag-class>com.mycompany.website.unit.PageTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>seachForm</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>pageBeanName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>paramEncoding</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>
function pageJunmp(form,pageNum,pageBeanName){
  var inputName = pageBeanName+".pageNum";
  form=$("#"+form);
  form.attr("method","post");
  var input = "<input type='hidden' id='pageNum' value='"+pageNum+"' name='"+inputName+"'>";
  form.append(input);
  form.submit();
}
<%@taglib prefix="p" uri="http://szmsd.com/tag/page" %>//引入标签
<p:pager seachForm="searchForm" />//标签使用


© 著作权归作者所有

共有 人打赏支持
black_lxf_720
粉丝 5
博文 36
码字总数 20281
作品 0
深圳
程序员
做项目后的一点小收获

分页的使用: a.当一个页面只有类别一个分页的时候,直接使用CMS自带的分页功能既可实现; b.当一个页面有多个分类的时候,如:一个父级栏目下面两个或者多个二级子栏目,每个子栏目 下面又有...

笨小熊
2016/03/15
103
0
JSP 常用自定义标签集--feilong-taglib

feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function taglib 说明 isContains 判断一个值,是否在一个集合(或者...

飞天奔月
2016/10/31
882
2
struts异步分页的自定义标签

@stranger.lin 你好,想跟你请教个问题: 请问你有做过这种struts异步分页的自定义标签吗? 用ajax异步刷新数据的分页标签。

wangzhxg
2012/12/12
200
1
Mybatis的分页插件PageHelper4.1.6的使用

1、引入jar包 这里以maven为例(如果下载jar,还需要下载pageHelper的依赖com.github.jsqlparser): 2、添加配置 在mybatis的全局配置文件里<configuration>标签下添加下面的配置 3、编写代...

颖辉小居
2016/09/19
206
1
基于 ThinkPHP 的内容管理系统--歪酷CMS

歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP+MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,实现多管理员管理,程序辅助功能也基本实现了常见的文...

鲁大在线
2013/02/19
5.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

这周撸了两款小程序,分享下关键点。

本周撸了两款小程序,在这里总结下开发过程中的小经验,希望对大家有用。 小程序端 我们先说小程序要注意的地方。 ##默认入口转发问题 当一个小程序Page的js文件中存在 onShareAppMessage 方...

阿北2017
27分钟前
2
0
物联网技术很新吗?不!都是旧技术

通常,当我们想到物联网时,我们会想到新的、令人兴奋的现代技术。毕竟,还有什么比不用起床就能通过智能手机告诉咖啡机开始煮晨杯的“未来”更重要呢? 多亏了物联网,我们可以在世界任何地方...

linuxCool
34分钟前
2
0
利用责任链模式设计一个拦截器

前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其...

crossoverJie
52分钟前
2
0
属性动画

透明度 alpha 平移translationX/translationY 旋转 rotation 缩放 scaleX/scaleY 多个动画一起AnimatorSet 透明度 ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"alpha" ......

lanyu96
53分钟前
1
0
Docker和Kubernetes如何让DevOps更具效力

缩短time-to-makrt对于任何一家企业都至关重要,这直接决定了客户满意度、市场竞争力乃至盈利能力。但在部署应用时,大多数企业内的IT团队都或多或少会遇到Dev和Ops之间的问题,这两个部门围...

好雨云帮
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部