文档章节

自定义分页标签

black_lxf_720
 black_lxf_720
发布于 2016/01/28 09:48
字数 628
阅读 26
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

bat强制启用宏

运行bat文件后,将宏的安全等级设为低,达到启用宏的目的。 REM 这个文件将提供用户快速设置Excel宏的安全等级@ECHO OFFCLS:cmd4REG ADD "HKEY_CURRENT_USER\Software\Mi...

tedzheng
7分钟前
0
0
流,用声明性的方式处理数据集 - 读《Java 8实战》

引入流 Stream API的代码 声明性 更简洁,更易读 可复合 更灵活 可并行 性能更好 流是什么? 它允许以声明方式处理数据集合 遍历数据集的高级迭代器 透明地并行处理 简短定义:从支持数据处理...

yysue
9分钟前
1
0
postman发送json格式的post请求

postman发送json格式的post请求 在地址栏里输入请求url:http://127.0.0.1:8081/getmoney 选择“POST”方式, 在“headers”添加key:Content-Type , value:application/json 点击"body",''ra...

两广总督bogang
16分钟前
0
0
Javascript将html转成pdf,下载(html2canvas 和 jsPDF)

最近碰到个需求,需要把当前页面生成pdf,并下载。弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) 项目源码地址:https://github.com/linwalker/render-html-to-pdf html2ca...

孟飞阳
16分钟前
0
0
pureftp源码编译及设定

--- use for RHEL 567 and Ubuntu 1604 1. download pureftpd wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.bz2 2. install gcc #apt-get install -y li......

zzimac
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部