java分页

来源:互联网 发布:冰镇西瓜 知乎 编辑:程序博客网 时间:2024/05/01 14:22
PageDTO.java
import java.io.Serializable;import java.util.ArrayList;import java.util.List;import lombok.Data;import lombok.EqualsAndHashCode;/** * 分页DTO *  * @author jiann *  *         2014年3月5日 */@Data@EqualsAndHashCode(callSuper = false)public class PageDTO implements Serializable {private static final long serialVersionUID = 1L;// 中间页数private List<Integer> pages;//当前页private int thisPage;// 上一页private int beforePage;// 下一页private int afterPage;// 首页private int startPage;// 最后一页private int endPage;private String url;public static PageDTO getPageDTO(GridParamDTO param, Long totalCount,Integer showPageCount) {PageDTO pageDto = new PageDTO();// 最大页数int lastPage = (int) Math.ceil((double) totalCount / param.getRows());if (param.getPage() < 1) {param.setPage(1);} else if (param.getPage() > lastPage) {param.setPage(lastPage);}// 页面最多显示页数的最大页int maxPage = param.getPage() + (showPageCount - 2);// 页面最多显示页数的最小页int minPage = 1;// 判断最大页是否大于最后一页if (maxPage >= lastPage) {// 如果当前页数最大页大于最后一页,按照最后一页计算minPage = (param.getPage() - (maxPage - lastPage) - 1) <= 0 ? 1: (param.getPage() - (maxPage - lastPage) - 1);maxPage = lastPage;} else {minPage = (param.getPage() - 1) <= 0 ? 1 : (param.getPage() - 1);maxPage = minPage + (showPageCount - 1);}List<Integer> pages = new ArrayList<Integer>();for (int i = minPage; i <= maxPage; i++) {pages.add(i);}// 上一页int beforePage = param.getPage() - 1;if (beforePage <= 0) {beforePage = 1;}// 下一页int afterPage = param.getPage() + 1;if (afterPage > lastPage) {afterPage = lastPage;}pageDto.setPages(pages);pageDto.setStartPage(1);pageDto.setEndPage(lastPage);pageDto.setBeforePage(beforePage);pageDto.setAfterPage(afterPage);pageDto.setUrl(param.getUrl());pageDto.setThisPage(param.getPage());return pageDto;}}

action设置:
        param.setRows(3);        param.setSidx("id");        param.setSord("desc");        param.setUrl("/ordering");        if (param.getPage() <= 0) {            param.setPage(1);        }        model.addAttribute("pageDto", PageDTO.getPageDTO(参数, 总条数, 每页显示条数));
页面调用page.ftl:

[#ftl]<div class="pages">[#if (pageDto.thisPage)!=(pageDto.startPage)&&(pageDto.thisPage)>0]<a class="psges-step" href="${springpath}${pageDto.url}?page=${pageDto.startPage}">首页</a><a class="psges-step" href="${springpath}${pageDto.url}?page=${pageDto.beforePage}">上一页</a>[#else]<span>首页</span><span>上一页</span>[/#if][#list pageDto.pages as page][#if (pageDto.thisPage)==page]<a class="selected" href="${springpath}${pageDto.url}?page=${page}">${page}</a>[#else]<a href="${springpath}/${pageDto.url}?page=${page}">${page}</a>[/#if][/#list][#if (pageDto.thisPage)!=(pageDto.endPage)]<a class="psges-nest" href="${springpath}${pageDto.url}?page=${pageDto.afterPage}">下一页</a><a class="psges-nest" href="${springpath}${pageDto.url}?page=${pageDto.endPage}">尾页</a>[#else]<span>下一页</span><span>尾页</span>[/#if]</div>



0 0