日期:2014-05-16 浏览次数:20588 次
?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