java ajax分页插件,java jsp标签分页,jquery 插件分页封装

分页CSS.pagination{

margin: 20px auto 0;

width: 960px;

font-size:12px;

text-align: center;

}

.pagination a{

border:1px solid #CCCCCC;

color: #336CA9;

font-weight: bold;

margin-right: 3px;

padding: 2px 9px;

text-decoration: none;

cursor: pointer;

}

.pagination .all{

font-size: 14px;

margin-right: 10px;

}

.pagination .all b{

margin: 0 5px;

}

.pagination a:hover{

background-color: #1987CD;

color:#FFFFFF;

background-image: none;

}

.pagination .current{

color: #000000;

font-weight: bold;

margin-right: 3px;

padding: 2px 9px;

}

.pagination span.disabled{

border:1px solid #CCCCCC;

color: #336CA9;

font-weight: bold;

margin-right: 3px;

padding: 2px 9px;

}

Java类封装package com.rying.weibo.util;

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport;

import cn.com.rying.logs.RyingLogs;

public class PageTag extends TagSupport {

private static final long serialVersionUID = 5729832874890369508L;

private String url; // 请求URI

private int pageSize; // 每页要显示的记录数

private int currentPage; // 当前页号

private int pageRecordCount; // 总记录数

@Override

public int doStartTag() throws JspException {

int pageCount = (pageRecordCount + pageSize - 1) / pageSize; // 计算总页数

RyingLogs.infoLogs("url=" + url + "/pageSize=" + pageSize + "/currentPage=" + currentPage + "/count=" + pageRecordCount);

// 拼写要输出到页面的HTML文本

StringBuilder sb = new StringBuilder();

sb.append("\r\n\r\n");

if (pageRecordCount == 0) {

sb.append("没有可显示的数据\r\n");

} else {

// 页号越界处理

if (currentPage > pageCount) {

currentPage = pageCount;

}

if (currentPage 

currentPage = 1;

}

sb.append("\r\n");

// 把当前页号设置成请求参数

sb.append("\r\n");

sb.append("\r\n");

// 输出统计数据

sb.append("共").append(pageCount).append("页");

// 上一页处理

if (currentPage == 1) {

sb.append("首页").append("\r\n").append("上一页").append("\r\n");

} else {

sb.append("首页\r\n");

sb.append("上一页\r\n");

}

// 页面显示最大页码

int maxPage = 10;

int center = maxPage / 2;

int start = 0;

int end = 0;

// 最大页数不超过maxPage

if (pageCount  center) {

// 尾部不够显示,总显示页码数量为maxPage

if (currentPage + center > pageCount) {

start = currentPage - (maxPage - (pageCount - currentPage)) + 1;

end = pageCount;

} else {

// 当前页控制显示为中间值

start = currentPage - center + 1;

end = currentPage + center;

}

} else {

// 当前页码不足最大显示的一半

start = 1;

end = maxPage;

}

}

for (int i = start; i <= end; i++) {

if (currentPage == i) { // 当前页号不需要超链接

sb.append("").append(i).append("\r\n");

} else {

sb.append("").append(i).append("\r\n");

}

}

// 下一页处理

if (currentPage == pageCount) {

sb.append("下一页").append("\r\n");

sb.append("尾页").append("\r\n");

} else {

sb.append("下一页\r\n");

sb.append("尾页\r\n");

}

sb.append("\r\n");

// 生成提交表单的JS

sb.append("\r\n");

}

sb.append("\r\n");

// 把生成的HTML输出到响应中

try {

pageContext.getOut().println(sb.toString());

} catch (IOException e) {

throw new JspException(e);

}

return SKIP_BODY; // 本标签主体为空,所以直接跳过主体

}

public void setUrl(String url) {

this.url = url;

}

public void setpageSize(int pageSize) {

this.pageSize = pageSize;

}

public void setcurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public void setpageRecordCount(int pageRecordCount) {

this.pageRecordCount = pageRecordCount;

}

}

pagetld0.9

p

page

com.rying.weibo.util.PageTag

empty

currentPage

true

true

int

pageRecordCount

true

true

int

pageSize

true

true

int

url

true

true

java.lang.String

页面使用

头部引入

jquery ajax分页封装/**

* jquery.pagination.js

*

* Author:Irwin.Ai

*

* Date: 2013-04-07

*/

(function($){

$.fn.pagination = function(options){

var opts = $.extend({}, $.fn.pagination.defaults, options);

return this.each(function(){

var $this = $(this);

/**

*计算总页数

*/

function calculatePages(data){

return ((data.total % opts.pageSize) == 0) ?  Math.floor(data.total / opts.pageSize) : (Math.floor(data.total / opts.pageSize) + 1);

}

/**

*计算开始结束页码

*/

function getInterval(data){

// 页面显示最大页码

var maxPage = 10;

var center = maxPage / 2;

var start = 0;

var end = 0;

var pageCount = calculatePages(data);

// 最大页数不超过maxPage

if (pageCount  center) {

// 尾部不够显示,总显示页码数量为maxPage

if (opts.currentPage + center > pageCount) {

start = opts.currentPage - (maxPage - (pageCount - opts.currentPage)) + 1;

end = pageCount;

} else {

// 当前页控制显示为中间值

start = opts.currentPage - center + 1;

end = opts.currentPage + center;

}

} else {

// 当前页码不足最大显示的一半

start = 1;

end = maxPage;

}

}

return [start,end];

}

/**

*选择页码,翻页

*/

function selectPage(page){

opts.currentPage = page;

draw();

}

/**

*填充显示链接html

*/

function draw(){

if(opts.ajax.url != null) {

var transData = ((opts.ajax.data == null) ? (new Object()) : opts.ajax.data);

transData.pageSize = opts.pageSize;

transData.currentPage = opts.currentPage;

$.ajax({

url : opts.ajax.url,

data : transData,

dataType : opts.ajax.dataType,

success : function(data){

opts.ajax.callback(data);

if(data == null || data == ""){

return;

}

if(data.total == undefined){

return;

}else{

//清空

$this.empty();

if(data.total == 0){

return;

}else{

//获取页码

var pageCount = calculatePages(data);

var interval = getInterval(data);

// 页号越界处理

if (opts.currentPage > opts.pageCount) {

opts.currentPage = pageCount;

}

if (opts.currentPage 

copts.currentPage = 1;

}

$this.append('共' + pageCount + '页');

if(opts.currentPage == 1){

$this.append('首页上一页');

} else {

$this.append('首页上一页');

}

for(var i = interval[0]; i <= interval[1]; i++){

if(opts.currentPage == i){

$this.append('' + i + '');

} else {

$this.append('' + i + '');

}

}

if(opts.currentPage == pageCount){

$this.append('下一页尾页');

} else {

$this.append('下一页尾页');

}

$(".first").bind("click",function(){

selectPage(1);

});

$(".end").bind("click",function(){

selectPage(calculatePages(data));

});

$(".pre").bind("click",function(){

selectPage(parseInt(opts.currentPage) - 1);

});

$(".next").bind("click",function(){

selectPage(parseInt(opts.currentPage) + 1);

});

$(".cur").bind("click", function(){

selectPage($(this).text());

});

}

}

}

});

}

}

draw();

});

};

$.fn.pagination.defaults = {

ajax : {

url : null, //url地址

data : null, // 数据,必须是对象

dataType : 'json', //数据类型

type : 'get', //提交类型

callback : function(){} //成功回调函数

},

pageSize : 5, //每页显示数量

currentPage : 1 //当前页

};

})(jQuery);

jquery调用$(".pagination").pagination({

ajax : {

url : 'search.action',

dataType : 'json',

data : {"search":"test"},

callback : function(data){

//do something

}

},

pageSize : 5

});

页面效果

98cb7cf90bc1dd4a17ee964f0e9d6759.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值