小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

分頁方法的改進(jìn)

 鳳舞天煌 2006-12-14
  網(wǎng)上很容易找到分頁的方法,但是功能相對弱,比如兩個(gè)翻頁單向關(guān)聯(lián)的情況需要改寫代碼。而且在使用中需要加入大段代碼。     我對其做了相關(guān)改進(jìn)。   先看看 [使用方法]: /* 如果要在一個(gè)action里面多次使用Pager對象則要重命名鏈接中的參數(shù)名字,默認(rèn)為pager.offset */
  Pager pagerDate = new Pager(request,mapping,"pagerDate.offset");
 
  Calendar nowCalendar = Calendar.getInstance();
  nowCalendar.add(Calendar.DATE,pagerDate.getOffset());   //生成分頁對象
  Pager page = new Pager(request, mapping);
  //可重寫每頁顯示條數(shù)
  page.setLength(2);
  //按頁面要求得到數(shù)據(jù)
  List list = scheduleManager.getScheduleDayList(nowCalendar, page.getOffset(),
    page.getLength());
  int size = scheduleManager.getScheduleDaySize(nowCalendar);
  //綁定依賴
  page.bindPager(pagerDate);
  //構(gòu)造分頁內(nèi)容標(biāo)簽
  String pagerHeader = page.generate(size);
 
  request.setAttribute("pagerHeader", pagerHeader);
  request.setAttribute("ContentList", list);
  request.setAttribute("pagerDateHeader",pagerDate.generate());   [jsp頁面顯示,只需]: <bean:write name="pagerHeader" filter="false"/> <bean:write name="pagerDateHeader" filter="false"/>   [Pager對象實(shí)現(xiàn)代碼]: package com.itone.virgo.util; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionMapping;   public class Pager {  private int MAX_PAGE_INDEX = 15;
 private String header = "";
 private int offset = 0;
 private int length = 20;
 HttpServletRequest request = null;
 ActionMapping mapping = null;
 String url = "";
 String paramId = "pager.offset";
 String bindString = "";    /**
  * @param request
  * @param mapping
  */
 public Pager(HttpServletRequest request, ActionMapping mapping) {
  this.request = request;
  this.mapping = mapping;
  this.url = request.getContextPath()
    + mapping.getModuleConfig().getPrefix() + mapping.getPath()
    + ".do";
  String pageOffset = request.getParameter(paramId);
  if (pageOffset == null || pageOffset.equals("")) {
   offset = 0;
  } else {
   offset = Integer.parseInt(pageOffset);
  }
 }    /**
  * 一個(gè)頁面有多個(gè)pager對象時(shí)需要重寫paramId使url里面的param參數(shù)有區(qū)別
  *
  * @param request
  * @param mapping
  * @param paramId
  */
 public Pager(HttpServletRequest request, ActionMapping mapping,
   String paramId) {
  this.request = request;
  this.mapping = mapping;
  this.paramId = paramId;
  this.url = request.getContextPath()
    + mapping.getModuleConfig().getPrefix() + mapping.getPath()
    + ".do";
  String pageOffset = request.getParameter(paramId);
  if (pageOffset == null || pageOffset.equals("")) {
   offset = 0;
  } else {
   offset = Integer.parseInt(pageOffset);
  }
 }    /**
  * 普遍情況
  */
 public String generate(int size) {
  this.header = "共有" + size + "項(xiàng)符合查詢";
  if (size > length) {
   String pref;
   if (url.indexOf("?") > -1) {
    pref = "&";
   } else {
    pref = "?";
   }
   String header = "<font face=‘Helvetica‘ length=‘-1‘>" + this.header
     + " ";
   if (offset > 0) {
    header += " <a href=\"" + url + pref + paramId + "="
      + (offset - length) + this.bindString + "\"> << </a>\n";
   }
   int start;
   int radius = MAX_PAGE_INDEX / 2 * length;
   if (offset < radius) {
    start = 0;
   } else if (offset < size - radius) {
    start = offset - radius;
   } else {
    start = (size / length - MAX_PAGE_INDEX) * length;
   }
   for (int i = start; i < size && i < start + MAX_PAGE_INDEX * length; i += length) {
    if (i == offset) {
     header += "<b>" + (i / length + 1) + "</b>\n";
    } else {
     header += " <a href=\"" + url + pref + paramId + "="
       + i + this.bindString + "\">" + (i / length + 1)
       + "</a>\n";
    }
   }
   if (offset < size - length) {
    header += " <a href=\"" + url + pref + paramId + "="
      + ((int) offset + (int) length) + this.bindString
      + "\"> >> </a>\n";
   }
   header += "</font>";
   return header;
  } else {
   return "";
  }
 }    /**
  * 必然有上一頁下下一頁情況
  *
  * @return
  */
 public String generate() {
  this.header = "其它查詢";
  String pref;
  if (url.indexOf("?") > -1) {
   pref = "&";
  } else {
   pref = "?";
  }
  String header = "<font face=‘Helvetica‘ size=‘-1‘>" + this.header + " ";
  header += " <a href=\"" + url + pref + paramId + "="
    + (offset - 1) + this.bindString + "\"> << </a>\n";
  header += " <a href=\"" + url + pref + paramId + "="
    + (offset + 1) + this.bindString + "\"> >> </a>\n";
  header += "</font>";
  return header;
 }    /**
  * 如果一個(gè)頁面有兩個(gè)pager對象,而且單向依賴,就需要把依賴方綁定到被依賴方
  *
  * @param sourcePager
  */
 public void bindPager(Pager sourcePager) {
  bindString = bindString + "&" + sourcePager.paramId + "="
    + sourcePager.offset;
 }  public String getUrl() {
  return url;
 }  public int getLength() {
  return length;
 }  public void setLength(int length) {
  this.length = length;
 }  public int getOffset() {
  return offset;
 }  public void setOffset(int offset) {
  this.offset = offset;
 }  public String getParamId() {
  return paramId;
 }  public void setParamId(String paramId) {
  this.paramId = paramId;
 }
}

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多