日期:2014-05-16 浏览次数:20647 次
?sns 评论 ajax 分页 和二级 评论 ajax 分页 ssh2 实现 源码下组 jar 在jar_1 jar_2 下载 数据 mysql测试可以
?
?
?
经过周六日的研究 终于弄明白 ajax 分页的实现了。
?
基本上就是利用了 jquery 的一个函数?
?
?
$("#id").load(url,function() {});
?
?
首先 进入 评论页面 -> load 评论 ,评论 再 -> load 子评论。
?
按照 组件开发的方式 ?编写分页标签。
?
?
package com.freewebsys.core.sns.taglib;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import com.freewebsys.core.sns.page.PageConf;
public class PageTaglib extends TagSupport {
private String id;// 标识不同分页,当一个页面有多个分页时,
private String action;
private int start;
private int limit;
private int total;
private String otherValue;
private String theme;
// 默认 分页跳转 js.兼容写法。兼容刷新分页 和 ajax分页。都调js函数。ajax要重写 goPage函数
private static final String DEFAULT_PAGE_JS = "<script type='text/javascript'>function goPage(url){location.href = url;}</script>";
// 分页 div 开始
private final String DEFAULT_THEME_BEGIN = "<div class='pagination' id='Pagination'>";
private final String MINI_THEME_BEGIN = "<div class='paginationMini' id='PaginationMini'>";
// 分页 div 结束
private final String DEFAULT_THEME_END = "</div>";
// 分页字符串
private final String PAGE_A = "<a href=\"javaScript:void(0);\" onclick=\"goPage('";
// 默认样式模板
@Override
public int doStartTag() throws JspException {
try {
if (total <= limit) {// 如果还不够一页 就不显示
return super.doEndTag();
}
// 初始化参数.每次独立计算.否则分页有问题.
PageConf pageConf = new PageConf(start, limit, total);
String ctx = pageContext.getServletContext().getContextPath() + "/";
ctx += action;
if (action.indexOf("?") >= 0) {// 如果存在?号用&
ctx += "&" + findOtherValue();
} else {// 否则用?
ctx += "?" + findOtherValue();
}
PageConf pageConfFirst = new PageConf(start, limit, total);
String firstUrl = ctx;
PageConf pageConfPrev = new PageConf(start, limit, total);
String prevUrl = ctx;
PageConf pageConfNext = new PageConf(start, limit, total);
String nextUrl = ctx;
PageConf pageConfLast = new PageConf(start, limit, total);
String lastUrl = ctx;
// pageContext.setAttribute("gridPanelWidth", width);
// pageContext.setAttribute("gridPanelHeight", height);
if (pageConf.hastPrevious()) {
pageConfFirst.getFirst();
firstUrl += "&start=" + pageConfFirst.getStart();
pageConfPrev.getPrevious();
prevUrl += "&start=" + pageConfPrev.getStart();
}
if (pageConf.hasNext()) {
pageConfNext.getNext();
nextUrl += "&start=" + pageConfNext.getStart();
pageConfLast.getLast();
lastUrl += "&start=" + pageConfLast.getStart();
}
// 直接将数据写到页面
String str = genCenterButtons(start, limit, total, ctx);
if (theme == null || theme.equals("")) {
writeToPage(DEFAULT_PAGE_JS);// 默认跳转函数
writeToPage(DEFAULT_THEME_BEGIN);
writeToPage(str);
} else if (theme.equals("ajax")) {// 普通ajax分页
writeToPage(DEFAULT_THEME_BEGIN);
writeToPage(str);
} else if (theme.equals("miniAjax")) {// mini型ajax分页
writeToPage(MINI_THEME_BEGIN);
if (id != null) {//标识不用分页
str = str.replace("goPage", "goMiniPage_" + id);
} else {
str = str.replace("goPage", "goMiniPage");
}
writeToPage(str);
}
// 如果是ajax就要在页面重写goPage函数
writeToPage(DEFAULT_THEME_END);
} catch (Exception e) {
e.printStackTrace();
}
return super.doEndTag();
}
/**
* 生成多个跳转按钮方法,如1,2,3,4,5这样的按钮跳转最大7页跳转
*/
private String genCenterButtons(int start, int limit, int total, String ctx) {
// 初始化参数.每次独立计算.否则分页有问题.
PageConf pageConf = new PageConf(start, limit, total);
PageConf pageConfTemp1 = new PageConf(start, limit, total);
PageConf pageConfTemp2 = new PageConf(start, limit, total);
// 结束页
PageConf pageConfTempLast = new PageConf(start, limit, total);
//
pageConfT