工作总结-分页

web 前端


1:分页

package core.util;

import java.io.Serializable;
import java.util.List;

/**
 * 分页器
 *
 * @author
 */
public class Paginator implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 2018436532193281591L;

    public static final int DEFAULT_ITEMS_PER_PAGE = 20;
    public static final int DEFAULT_SLIDER_SIZE = 7;
    public static final int UNKNOWN_ITEMS = Integer.MAX_VALUE;
    private int page;
    private int items=0;
    private int pageSize;
    private String sortBy;
    private String order;

    //控制页面上页签边界
    private int start;
    private int end;

    // SqlMap入参
    private Object params;
    // 返回结果集
    private List<?> results;

    public Paginator() {
        this(0);
    }

    public Paginator(int pageSize) {
        this(pageSize, UNKNOWN_ITEMS);
    }

    public Paginator(int pageSize, int items) {
        this.items = (items >= 0 ? items : 0);
        this.pageSize = (pageSize > 0 ? pageSize : DEFAULT_ITEMS_PER_PAGE);
        this.page = calcPage(0);
    }

    /**
     * SqlMap 入参
     *
     * @return
     */
    public Object getParams() {
        return params;
    }

    public void setParams(Object params) {
        this.params = params;
    }

    /**
     * 分页结果数据
     *
     * @return
     */
    public List<?> getResults() {
        return results;
    }

    public void setResults(List<?> results) {
        this.results = results;
    }

    /**
     * 得到总页数
     *
     * @return
     */
    public int getTotalPage() {
        return (int) Math
                .ceil((double) this.items / (double) this.pageSize);
    }

    /**
     * 得到当前页
     *
     * @return
     */
    public int getPage() {
        return this.page;
    }

    /**
     * 设置当前页
     *
     * @param page
     * @return
     */
    public int setPage(int page) {
        return this.page = calcPage(page);
    }

    /**
     * 得到总记录数
     *
     * @return
     */
    public int getItems() {
        return this.items;
    }

    /**
     * 设置总记录数
     *
     * @return
     */
    public int setItems(int items) {
        this.items = (items >= 0 ? items : 0);
        return this.items;
    }

    /**
     * 得到每页显示记录数
     *
     * @return
     */
    public int getPageSize() {
        return this.pageSize;
    }

    /**
     * 设置每页显示记录数
     *
     * @param pageSize
     * @return
     */
    public int setPageSize(int pageSize) {
        this.pageSize = (pageSize > 0 ? pageSize : DEFAULT_ITEMS_PER_PAGE);
        return this.pageSize;
    }

    /**
     * 得到分页记录的开始下标
     *
     * @return
     */
    public int getOffset() {
        return this.page > 0 ? this.pageSize * (this.page - 1) : 0;
    }

    public int getLength() {
        if (this.page > 0) {
            return Math.min(this.pageSize * this.page, this.items)
                    - this.pageSize * (this.page - 1);
        }
        return 0;
    }

    public int getBeginIndex() {
        if (this.page > 0) {
            return this.pageSize * (this.page - 1) + 1;
        }
        return 0;
    }

    public int getEndIndex() {
        if (this.page > 0) {
            return Math.min(this.pageSize * this.page, this.items);
        }
        return 0;
    }

    /**
     * 以当前记录的下标设置分页
     *
     * @param itemOffset
     * @return
     */
    public int setItem(int itemOffset) {
        return setPage(itemOffset / this.pageSize + 1);
    }

    /**
     * 得到首页
     *
     * @return
     */
    public int firstPage() {
        return calcPage(1);
    }

    /**
     * 得到尾页
     *
     * @return
     */
    public int lastPage() {
        return calcPage(getTotalPage());
    }

    /**
     * 前一页
     *
     * @return
     */
    public int previousPage() {
        return calcPage(this.page - 1);
    }

    /**
     * 前N页
     *
     * @param n
     * @return
     */
    public int previousPage(int n) {
        return calcPage(this.page - n);
    }

    /**
     * 后一页
     *
     * @return
     */
    public int nextPage() {
        return calcPage(this.page + 1);
    }

    /**
     * 后N页
     *
     * @param n
     * @return
     */
    public int nextPage(int n) {
        return calcPage(this.page + n);
    }

    /**
     * 是否可用
     *
     * @param page
     * @return
     */
    public boolean enablePage(int page) {
        return (page < 1) || (page > getTotalPage()) || (page == this.page);
    }

    /**
     * 序列器
     *
     * @return
     */
    public int[] slider() {
        return slider(DEFAULT_SLIDER_SIZE);
    }

    /**
     * 序列器
     *
     * @return
     */
    public int[] slider(int width) {
        int pages = getTotalPage();

        if ((pages < 1) || (width < 1)) {
            return new int[0];
        }
        if (width > pages) {
            width = pages;
        }

        int[] slider = new int[width];
        int first = this.page - (width - 1) / 2;

        if (first < 1) {
            first = 1;
        }

        if (first + width - 1 > pages) {
            first = pages - width + 1;
        }

        for (int i = 0; i < width; i++) {
            slider[i] = (first + i);
        }

        return slider;
    }

    /**
     * 计算分页
     *
     * @param page
     * @return
     */
    protected int calcPage(int page) {
        int pages = getTotalPage();

        if (pages > 0) {
            return page > pages ? pages : page < 1 ? 1 : page;
        }

        return 0;
    }

    public String getSortBy() {
        return sortBy;
    }

    public void setSortBy(String sortBy) {
        this.sortBy = sortBy;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

    public int getStart() {
        start = page-2;
        if(start<1){
            end = end+1-start;
            start = 1;
        }
        return start;
    }


    public int getEnd() {
        end = page+2;
        if(end>getTotalPage()){
            start = start - (end-getTotalPage());
            end = getTotalPage();
        }
        if(end<1){
            end = 1;
        }
        return end;
    }

    /*
    渲染页签 包含当前页
     */
    public int[] getNums() {
        int start = getStart();
        int end = getEnd();
        if(start>end){
            return null;
        }
        int[] nums = new int[end-start+1];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = start+i;
        }

        return nums;
    }
}


使用时

controller

public Result getTagList() {
    Form<Paginator> form = Form.form(Paginator.class);
    form = form.bindFromRequest(request());
    final Paginator paginator = (Paginator)form.get();
    String searchTag = form.data().get("SearchTag");
    List<Tag> tagList = tagService.getTagList(paginator,searchTag);
    return ok(TagHTML.render(tagList,paginator,searchTag));
}


view


<form id="searchForm" name="searchForm"  action="/admin/tag/list">
    <input type="hidden" name="page" id="page" value="@paginator.getPage()"/>
    <input type="hidden" name="pageSize" id="pageSize" value="@paginator.getPageSize()"/>
/form>

<table>

xxxxxx

/table>

@Page(paginator)
 
 
 
例子
 
<div class="page-header col-lg-12">
    <form id="searchForm" name="searchForm"  action="/admin/tag/list">
        <input type="hidden" name="page" id="page" value="@paginator.getPage()"/>
        <input type="hidden" name="pageSize" id="pageSize" value="@paginator.getPageSize()"/>
         <div class="input-group formSearch form-group col-lg-12" >
            <div class="col-lg-4 f-padding-left-0">
                <input type="text" class="form-control" name="SearchTag" id="SearchTag" value="@searchTag" placeholder="标签"/>
            </div>
            <span class="col-lg-2 f-padding-left-0">
                <button class="btn btn-default  font-16px" type="button" id="btnSearch">
                    <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
                </button>
            </span>
                </div>
    </form>

    <table class="table table-striped table-hover table-bordered" id="overall">
        <thead >
        <tr>
            <th class="col-md-1">ID</th>
            <th class="col-md-1">操作<input type="checkbox" name="all_check" id="all_check"></th>
            <th class="col-md-1">标签</th>
            <th class="col-md-1">创建时间</th>
        </tr>
        </thead>
        <tbody>
        @for(mapEntry<-tagList){
        <tr>
            <td>@mapEntry.getTagId()</td>
            <td><input type="checkbox" name="del_check" value="@mapEntry.getTagId()"></td>
            <td>@mapEntry.getName()</td>
            <td>
                @DateUtil.format(mapEntry.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")
            </td>
        </tr>
        }
        </tbody>
    </table>
    <div class="col-lg-12 f-padding-left-0">
        <div class="col-lg-2">
    <input type="button"  class = "btn btn-danger btn-sm" id ="delete" name ="delete" value="删除标签"/>
        </div>
        <div class="col-lg-2">
    <input type="button" class ="btn btn-primary btn-sm" id ="add" value="创建标签" >
            </div>
        </div>
    @Page(paginator)
</div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值