• 关于分页Pagination的使用


    在这个例子当中,用的是ssm框架整合,并且用的是Pagination实现分页

    先来看一下分页中用到的类的源码

    Paginable.java

     1 package cn.itcast.common.page;
     2 
     3 /**
     4  * 分页接口
     5  */
     6 public interface Paginable {
     7     /**
     8      * 总记录数
     9      * 
    10      * @return
    11      */
    12     public int getTotalCount();
    13 
    14     /**
    15      * 总页数
    16      * 
    17      * @return
    18      */
    19     public int getTotalPage();
    20 
    21     /**
    22      * 每页记录数
    23      * 
    24      * @return
    25      */
    26     public int getPageSize();
    27 
    28     /**
    29      * 当前页号
    30      * 
    31      * @return
    32      */
    33     public int getPageNo();
    34 
    35     /**
    36      * 是否第一页
    37      * 
    38      * @return
    39      */
    40     public boolean isFirstPage();
    41 
    42     /**
    43      * 是否最后一页
    44      * 
    45      * @return
    46      */
    47     public boolean isLastPage();
    48 
    49     /**
    50      * 返回下页的页号
    51      */
    52     public int getNextPage();
    53 
    54     /**
    55      * 返回上页的页号
    56      */
    57     public int getPrePage();
    58 }
    View Code

    Pagination.java

      1 package cn.itcast.common.page;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 /**
      7  * 列表分页。包含list属性。
      8  */
      9 public class Pagination extends SimplePage{
     10 
     11     public Pagination() {
     12     }
     13 
     14     /**
     15      * 构造器
     16      * 
     17      * @param pageNo
     18      *            页码
     19      * @param pageSize
     20      *            每页几条数据
     21      * @param totalCount
     22      *            总共几条数据
     23      */
     24     public Pagination(int pageNo, int pageSize, int totalCount) {
     25         super(pageNo, pageSize, totalCount);
     26         
     27     }
     28 
     29     /**
     30      * 构造器
     31      * 
     32      * @param pageNo
     33      *            页码
     34      * @param pageSize
     35      *            每页几条数据
     36      * @param totalCount
     37      *            总共几条数据
     38      * @param list
     39      *            分页内容
     40      */
     41     public Pagination(int pageNo, int pageSize, int totalCount, List<?> list) {
     42         super(pageNo, pageSize, totalCount);
     43         this.list = list;
     44     }
     45 
     46     /**
     47      * 第一条数据位置
     48      * 
     49      * @return
     50      */
     51     public int getFirstResult() {
     52         return (pageNo - 1) * pageSize;
     53     }
     54 
     55     /**
     56      * 当前页的数据
     57      */
     58     private List<?> list;
     59     
     60     /**
     61      * 当前页的分页样式
     62      */
     63     private List<String> pageView;
     64 
     65     /**
     66      * 获得分页内容
     67      * 
     68      * @return
     69      */
     70     public List<?> getList() {
     71         return list;
     72     }
     73 
     74     /**
     75      * 设置分页内容
     76      * 
     77      * @param list
     78      */
     79     @SuppressWarnings("unchecked")
     80     public void setList(List list) {
     81         this.list = list;
     82     }
     83     /**
     84      * 获得分页样式
     85      * 
     86      * @return
     87      */
     88     public List<String> getPageView() {
     89         return pageView;
     90     }
     91     /**
     92      * 设置分页样式
     93      * 
     94      * @param list
     95      */
     96     public void setPageView(List<String> pageView) {
     97         this.pageView = pageView;
     98     }
     99 
    100 
    101     /**
    102      * 分页显示样示部分
    103      */
    104     public void pageView(String url,String params){
    105         
    106          pageView = new ArrayList<String>();
    107              
    108         if(this.pageNo != 1){
    109             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo=1'"><font size=2>首页</font></a>");
    110             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-1)+"'"><font size=2>上一页</font></a>");
    111         }else{
    112             pageView.add("<font size=2>首页</font>");
    113             pageView.add("<font size=2>上一页</font>");
    114         }
    115     
    116         if(this.getTotalPage() <= 10){
    117             for (int i = 0; i < this.getTotalPage(); i++) {
    118                 if((i+1)==this.pageNo){
    119                     pageView.add("<strong>"+this.pageNo+"</strong>");
    120                     i = i+1;
    121                     if(this.pageNo==this.getTotalPage())break;
    122                 }
    123                 pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
    124             }
    125         }else if(this.getTotalPage() <= 20){
    126             //没有把...加上
    127             int l = 0;
    128             int r = 0;
    129             if(this.pageNo<5){
    130                 l=this.pageNo-1;
    131                 r=10-l-1;
    132             }else if(this.getTotalPage()-this.pageNo<5){
    133                 r=this.getTotalPage()-this.pageNo;
    134                 l=10-1-r;
    135             }else{
    136                 l=4;
    137                 r=5;
    138             }
    139             int tmp =  this.pageNo-l;
    140             for (int i = tmp; i < tmp+10; i++) {
    141                 if(i==this.pageNo){
    142                     pageView.add("<strong>"+this.pageNo+"</strong>");
    143                     i = i+1;
    144                     if(this.pageNo==this.getTotalPage()) break;
    145                 }
    146                 pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i)+"'">"+(i)+"</a>");
    147             }
    148                 
    149         }else if(this.pageNo<7){
    150             for (int i = 0; i < 8; i++) {
    151                 if(i+1==this.pageNo){
    152                     pageView.add("<strong>"+this.pageNo+"</strong>");
    153                     i = i+1;
    154                 }
    155                 pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
    156             }
    157             pageView.add("...");
    158             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage()-1)+"'">"+(this.getTotalPage()-1)+"</a>");
    159             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage())+"'">"+(this.getTotalPage())+"</a>");
    160         }else if(this.pageNo>this.getTotalPage()-6){
    161             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(1)+"'">"+(1)+"</a>");
    162             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(2)+"'">"+(2)+"</a>");
    163             pageView.add("...");
    164             for (int i = this.getTotalPage()-8; i <this.getTotalPage() ; i++) {
    165                 if(i+1==this.pageNo){
    166                     pageView.add("<strong>"+this.pageNo+"</strong>");
    167                     i = i+1;
    168                     if(this.pageNo==this.getTotalPage()) break;
    169                 }
    170                 pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
    171             }
    172         }else{
    173             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(1)+"'">"+(1)+"</a>");
    174             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(2)+"'">"+(2)+"</a>");
    175             pageView.add("...");
    176             
    177             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-2)+"'">"+(this.pageNo-2)+"</a>");
    178             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-1)+"'">"+(this.pageNo-1)+"</a>");
    179             pageView.add("<strong>"+this.pageNo+"</strong>");
    180             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+1)+"'">"+(this.pageNo+1)+"</a>");
    181             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+2)+"'">"+(this.pageNo+2)+"</a>");
    182             
    183             pageView.add("...");
    184             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage()-1)+"'">"+(this.getTotalPage()-1)+"</a>");
    185             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage())+"'">"+(this.getTotalPage())+"</a>");
    186         }    
    187         if(this.pageNo != this.getTotalPage()){
    188             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+1)+"'"><font size=2>下一页</font></a>");
    189             pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+this.getTotalPage()+"'"><font size=2>尾页</font></a>");
    190         } else{
    191             pageView.add("<font size=2>下一页</font>");
    192             pageView.add("<font size=2>尾页</font>");
    193         }
    194         pageView.add("共<var>" + getTotalPage() + "</var>页 到第<input type='text' id='PAGENO'  size='3' />页 <input type='button' id='skip' class='hand btn60x20' value='确定' onclick="javascript:window.location.href = '" + url + "?" + params + "&pageNo=' + $('#PAGENO').val() "/>");
    195     }
    196 }
    View Code

    SimplePage.java

      1 package cn.itcast.common.page;
      2 
      3 /**
      4  * 简单分页类
      5  */
      6 public class SimplePage implements java.io.Serializable,Paginable {
      7     
      8     private static final long serialVersionUID = 1L;
      9     public static final int DEF_COUNT = 20;
     10 
     11     /**
     12      * 检查页码 checkPageNo
     13      * 
     14      * @param pageNo
     15      * @return if pageNo==null or pageNo<1 then return 1 else return pageNo
     16      */
     17     public static int cpn(Integer pageNo) {
     18         return (pageNo == null || pageNo < 1) ? 1 : pageNo;
     19     }
     20 
     21     public SimplePage() {
     22     }
     23 
     24     /**
     25      * 构造器
     26      * 
     27      * @param pageNo
     28      *            页码
     29      * @param pageSize
     30      *            每页几条数据
     31      * @param totalCount
     32      *            总共几条数据
     33      */
     34     public SimplePage(int pageNo, int pageSize, int totalCount) {
     35         setTotalCount(totalCount);
     36         setPageSize(pageSize);
     37         setPageNo(pageNo);
     38         adjustPageNo();
     39         
     40     }
     41 
     42     /**
     43      * 调整页码,使不超过最大页数
     44      */
     45     public void adjustPageNo() {
     46         if (pageNo == 1) {
     47             return;
     48         }
     49         int tp = getTotalPage();
     50         if (pageNo > tp) {
     51             pageNo = tp;
     52         }
     53     }
     54 
     55     /**
     56      * 获得页码
     57      */
     58     public int getPageNo() {
     59         return pageNo;
     60     }
     61 
     62     /**
     63      * 每页几条数据
     64      */
     65     public int getPageSize() {
     66         return pageSize;
     67     }
     68 
     69     /**
     70      * 总共几条数据
     71      */
     72     public int getTotalCount() {
     73         return totalCount;
     74     }
     75 
     76     /**
     77      * 总共几页
     78      */
     79     public int getTotalPage() {
     80         int totalPage = totalCount / pageSize;
     81         if (totalPage == 0 || totalCount % pageSize != 0) {
     82             totalPage++;
     83         }
     84         return totalPage;
     85     }
     86 
     87     /**
     88      * 是否第一页
     89      */
     90     public boolean isFirstPage() {
     91         return pageNo <= 1;
     92     }
     93 
     94     /**
     95      * 是否最后一页
     96      */
     97     public boolean isLastPage() {
     98         return pageNo >= getTotalPage();
     99     }
    100 
    101     /**
    102      * 下一页页码
    103      */
    104     public int getNextPage() {
    105         if (isLastPage()) {
    106             return pageNo;
    107         } else {
    108             return pageNo + 1;
    109         }
    110     }
    111 
    112     /**
    113      * 上一页页码
    114      */
    115     public int getPrePage() {
    116         if (isFirstPage()) {
    117             return pageNo;
    118         } else {
    119             return pageNo - 1;
    120         }
    121     }
    122 
    123     protected int totalCount = 0;
    124     protected int pageSize = 20;
    125     protected int pageNo = 1;
    126 
    127     /**
    128      * if totalCount<0 then totalCount=0
    129      * 
    130      * @param totalCount
    131      */
    132     public void setTotalCount(int totalCount) {
    133         if (totalCount < 0) {
    134             this.totalCount = 0;
    135         } else {
    136             this.totalCount = totalCount;
    137         }
    138     }
    139 
    140     /**
    141      * if pageSize< 1 then pageSize=DEF_COUNT
    142      * 
    143      * @param pageSize
    144      */
    145     public void setPageSize(int pageSize) {
    146         if (pageSize < 1) {
    147             this.pageSize = DEF_COUNT;
    148         } else {
    149             this.pageSize = pageSize;
    150         }
    151     }
    152 
    153     /**
    154      * if pageNo < 1 then pageNo=1
    155      * 
    156      * @param pageNo
    157      */
    158     public void setPageNo(int pageNo) {
    159         if (pageNo < 1) {
    160             this.pageNo = 1;
    161         } else {
    162             this.pageNo = pageNo;
    163         }
    164     }
    165 }
    View Code

     好了,下面是我写的项目的源码,用的就是这个Pagination来实现分页

    BrandController.java

     1 package cn.lzc.code.controller.admin;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.ui.Model;
     6 import org.springframework.web.bind.annotation.RequestMapping;
     7 
     8 import cn.itcast.common.page.Pagination;
     9 import cn.lzc.code.po.Brand;
    10 import cn.lzc.code.service.BrandService;
    11 
    12 /**
    13  * 品牌管理Controller
    14  * 
    15  * @author admin
    16  *
    17  */
    18 @Controller
    19 @RequestMapping("/brand")
    20 public class BrandController {
    21     // 自动装配
    22     @Autowired
    23     private BrandService brandService;
    24 
    25     /**
    26      * 获取 品牌列表,按条件搜索
    27      * 
    28      * @return
    29      */
    30     @RequestMapping(value = "list.do")
    31     public String list(Integer pageNo, String name, Integer isDisplay, Model model) {
    32         // 分页查询品牌,按条件搜索
    33         Pagination pagination = brandService.getBrandListByQuery(pageNo, name, isDisplay);
    34         // 添加显示到页面
    35         model.addAttribute("pagination", pagination);
    36         // 回显查询条件name
    37         model.addAttribute("name", name);
    38         // 回显查询条件isDisplay
    39         model.addAttribute("isDisplay", isDisplay);
    40         return "brand/list";
    41     }
    42 }

    BrandService.java

     1 package cn.lzc.code.service;
     2 
     3 import java.util.List;
     4 
     5 import cn.itcast.common.page.Pagination;
     6 import cn.lzc.code.po.Brand;
     7 
     8 /**
     9  * 品牌接口
    10  * 
    11  * @author admin
    12  *
    13  */
    14 public interface BrandService {
    15     /**
    16      * 根据条件查询品牌,可分页
    17      * 
    18      * @param pageNo
    19      * @param name
    20      * @param isDisplay
    21      * @return
    22      */
    23     public Pagination getBrandListByQuery(Integer pageNo, String name, Integer isDisplay);
    24 
    25 }

    BrandServiceImpl.java

     1 package cn.lzc.code.service.impl;
     2 
     3 import java.util.List;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 
     8 import cn.itcast.common.page.Pagination;
     9 import cn.lzc.code.mapper.BrandMapper;
    10 import cn.lzc.code.po.Brand;
    11 import cn.lzc.code.po.vo.BrandQuery;
    12 import cn.lzc.code.service.BrandService;
    13 
    14 /**
    15  * 品牌管理实现类
    16  * 
    17  * @author admin
    18  *
    19  */
    20 @Service
    21 public class BrandServiceImpl implements BrandService {
    22     // 自动装配
    23     @Autowired
    24     private BrandMapper brandMapper;
    25 
    26     /**
    27      * 根据条件查询品牌,可分页
    28      */
    29     public Pagination getBrandListByQuery(Integer pageNo, String name, Integer isDisplay) {
    30         // 如果传入的是字符串,那就是null
    31         if (name != null)
    32             if ("".equals(name.trim())) {
    33                 name = null;
    34             }
    35         // 创建一个传递参数的品牌查询
    36         BrandQuery brandQuery = new BrandQuery();
    37         // 设置查询品牌可见的,1为可见,0为不可见
    38         brandQuery.setIsDisplay(1);
    39 
    40         // 拼接条件,显示url
    41         StringBuilder str = new StringBuilder();
    42         if (name != null) {
    43             brandQuery.setName(name);
    44             str.append("name=").append(name);
    45         }
    46         if (isDisplay != null) {
    47             brandQuery.setIsDisplay(isDisplay);
    48             str.append("&isDisplay=").append(isDisplay);
    49         } else {
    50             // 设置只能查询 可见的品牌
    51             brandQuery.setIsDisplay(1);
    52             str.append("&isDisplay=").append(1);
    53         }
    54 
    55         // 查询brand的总记录数
    56         int totalCount = brandMapper.getBrandCount(brandQuery);
    57 
    58         // cpn方法,如果pageNo<1或为空,则设置为1
    59         int pageNo1 = Pagination.cpn(pageNo);
    60 
    61         // 设置开始页
    62         brandQuery.setPageNo(pageNo1);
    63 
    64         // 查询品牌总记录
    65         List<Brand> brands = brandMapper.getBrandListByQuery(brandQuery);
    66         // 构建分页对象
    67         // 四个参数,当前页数,每页显示的记录数,总记录数,查询出来的列表也就是要显示的列表
    68         Pagination pagination = new Pagination(pageNo1, brandQuery.getPageSize(), totalCount, brands);
    69         // 分页在页面显示 /brand/list.do?name=aaa&&isDisplay=1
    70         String url = "/brand/list.do";
    71         pagination.pageView(url, str.toString());
    72 
    73         // 返回分页对象
    74         return pagination;
    75     }
    76 
    77 }
     cpn方法,用来判断当前页pageNo,如果pageNo<1或为空,则设置为1
    源码
        /**
         * 检查页码 checkPageNo
         * 
         * @param pageNo
         * @return if pageNo==null or pageNo<1 then return 1 else return pageNo
         */
        public static int cpn(Integer pageNo) {
            return (pageNo == null || pageNo < 1) ? 1 : pageNo;
        }



    BrandMapper.java

     1 package cn.lzc.code.mapper;
     2 
     3 import java.util.List;
     4 
     5 import cn.lzc.code.po.Brand;
     6 import cn.lzc.code.po.vo.BrandQuery;
     7 
     8 /**
     9  * 品牌Mapper
    10  * 
    11  * @author admin
    12  *
    13  */
    14 public interface BrandMapper {
    15     /**
    16      * 查询brand的总记录数
    17      * @param brandQuery 
    18      * 
    19      * @return
    20      */
    21     public int getBrandCount(BrandQuery brandQuery);
    22 
    23     /**
    24      * 根据条件查询品牌,可分页
    25      * 
    26      * @param brandQuery
    27      * @return
    28      */
    29     public List<Brand> getBrandListByQuery(BrandQuery brandQuery);
    30 
    31 }

    BrandMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>  
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     3 
     4 <!-- 返回结果与javaBean Brand对象中的属性 映射关系 -->
     5 <mapper namespace="cn.lzc.code.mapper.BrandMapper">
     6     <resultMap type="cn.lzc.code.po.Brand" id="brand">
     7         <result property="id" column="id" />
     8         <result property="name" column="name" />
     9         <result property="description" column="description" />
    10         <result property="imgUrl" column="img_url" />
    11         <result property="webSite" column="web_site" />
    12         <result property="sort" column="sort" />
    13         <result property="isDisplay" column="is_display" />
    14     </resultMap>
    15 
    16     <!-- 查询品牌总记录数 -->
    17     <select id="getBrandCount" parameterType="cn.lzc.code.po.vo.BrandQuery"
    18         resultType="Integer">
    19         select
    20         count(*)
    21         from
    22         bbs_brand
    23         <where>
    24             is_display=#{isDisplay}
    25 
    26             <if test="name !=null">
    27                 and name = #{name}
    28             </if>
    29         </where>
    30     </select>
    31 
    32     <!-- 根据条件查询品牌,可分页 -->
    33     <select id="getBrandListByQuery" parameterType="cn.lzc.code.po.vo.BrandQuery"
    34         resultMap="brand">
    35         select
    36         id,name,description,img_url,web_site,sort,is_display
    37         from
    38         bbs_brand
    39         <where>
    40             is_display=#{isDisplay}
    41             <if test="name !=null">
    42                 and name like '%${name}%'
    43             </if>
    44         </where>
    45         order by id asc
    46         limit ${startRow} , ${pageSize}
    47     </select>
    48 
    49 </mapper>

    jsp页面

        <tbody class="pn-ltbody">
        <c:forEach items="${pagination.list}" var="brand">
            <tr bgcolor="#ffffff" onmouseout="this.bgColor='#ffffff'" onmouseover="this.bgColor='#eeeeee'">
                <td>
                <input type="checkbox" value="${brand.id}" name="ids"/></td>
                <td align="center">${brand.id }</td>
                <td align="center">${brand.name }</td>
                <td align="center"><img width="40" height="40" src="${brand.allImgUrl}"/></td>
                <td align="center">${brand.description}</td>
                <td align="center">${brand.sort}</td>
                <td align="center">
                    <c:if test="${brand.isDisplay==1}"></c:if>
                    <c:if test="${brand.isDisplay==0}"></c:if>
                </td>
                <td align="center">
                <a class="pn-opt" href="#">修改</a> | <a class="pn-opt" onclick="if(!confirm('您确定删除吗?')) {return false;}" href="#">删除</a>
                </td>
            </tr>
        </c:forEach>
        </tbody>
    
    
    <div class="page pb15">
        <span class="r inb_a page_b">
            <c:forEach items="${pagination.pageView }" var="page">
                ${page }
            </c:forEach>    
        </span>
    </div>

    分页样式显示的样式及部分代码

     

     /**
         * 分页显示样示部分
         */
        public void pageView(String url,String params){
            
             pageView = new ArrayList<String>();
                 
            if(this.pageNo != 1){
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo=1'"><font size=2>首页</font></a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-1)+"'"><font size=2>上一页</font></a>");
            }else{
                pageView.add("<font size=2>首页</font>");
                pageView.add("<font size=2>上一页</font>");
            }
        
            if(this.getTotalPage() <= 10){
                for (int i = 0; i < this.getTotalPage(); i++) {
                    if((i+1)==this.pageNo){
                        pageView.add("<strong>"+this.pageNo+"</strong>");
                        i = i+1;
                        if(this.pageNo==this.getTotalPage())break;
                    }
                    pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
                }
            }else if(this.getTotalPage() <= 20){
                //没有把...加上
                int l = 0;
                int r = 0;
                if(this.pageNo<5){
                    l=this.pageNo-1;
                    r=10-l-1;
                }else if(this.getTotalPage()-this.pageNo<5){
                    r=this.getTotalPage()-this.pageNo;
                    l=10-1-r;
                }else{
                    l=4;
                    r=5;
                }
                int tmp =  this.pageNo-l;
                for (int i = tmp; i < tmp+10; i++) {
                    if(i==this.pageNo){
                        pageView.add("<strong>"+this.pageNo+"</strong>");
                        i = i+1;
                        if(this.pageNo==this.getTotalPage()) break;
                    }
                    pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i)+"'">"+(i)+"</a>");
                }
                    
            }else if(this.pageNo<7){
                for (int i = 0; i < 8; i++) {
                    if(i+1==this.pageNo){
                        pageView.add("<strong>"+this.pageNo+"</strong>");
                        i = i+1;
                    }
                    pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
                }
                pageView.add("...");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage()-1)+"'">"+(this.getTotalPage()-1)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage())+"'">"+(this.getTotalPage())+"</a>");
            }else if(this.pageNo>this.getTotalPage()-6){
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(1)+"'">"+(1)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(2)+"'">"+(2)+"</a>");
                pageView.add("...");
                for (int i = this.getTotalPage()-8; i <this.getTotalPage() ; i++) {
                    if(i+1==this.pageNo){
                        pageView.add("<strong>"+this.pageNo+"</strong>");
                        i = i+1;
                        if(this.pageNo==this.getTotalPage()) break;
                    }
                    pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(i+1)+"'">"+(i+1)+"</a>");
                }
            }else{
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(1)+"'">"+(1)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(2)+"'">"+(2)+"</a>");
                pageView.add("...");
                
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-2)+"'">"+(this.pageNo-2)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo-1)+"'">"+(this.pageNo-1)+"</a>");
                pageView.add("<strong>"+this.pageNo+"</strong>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+1)+"'">"+(this.pageNo+1)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+2)+"'">"+(this.pageNo+2)+"</a>");
                
                pageView.add("...");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage()-1)+"'">"+(this.getTotalPage()-1)+"</a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.getTotalPage())+"'">"+(this.getTotalPage())+"</a>");
            }    
            if(this.pageNo != this.getTotalPage()){
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+(this.pageNo+1)+"'"><font size=2>下一页</font></a>");
                pageView.add("<a href="javascript:void(0);" onclick="javascript:window.location.href='" + url + "?" + params + "&pageNo="+this.getTotalPage()+"'"><font size=2>尾页</font></a>");
            } else{
                pageView.add("<font size=2>下一页</font>");
                pageView.add("<font size=2>尾页</font>");
            }
            pageView.add("共<var>" + getTotalPage() + "</var>页 到第<input type='text' id='PAGENO'  size='3' />页 <input type='button' id='skip' class='hand btn60x20' value='确定' onclick="javascript:window.location.href = '" + url + "?" + params + "&pageNo=' + $('#PAGENO').val() "/>");
        }
  • 相关阅读:
    12月15日,progress_dispaly
    Android studio和Genymotion-VirtualBox的配合使用
    JDK7动态代理源码分析
    跟踪mqttv3源码(二)
    跟踪mqttv3源码(一)
    Spring自定义标签
    Eclipse发布Maven项目到远程服务器
    结合实际项目分析pom.xml
    Maven的安装环境配置
    PHP7新特性
  • 原文地址:https://www.cnblogs.com/limn/p/9218913.html
Copyright © 2020-2023  润新知