解决方案 »

  1.   

    写个自定义标签吧!给你个例子,前端:<fn:page url="/profile/allQuestionAndAnswer?userId=${userId}"></fn:page>,
    后端:
    private static final long   serialVersionUID             = -1885082542634459990L;

    private static final String PAGE_FIRST_DIV               = " <div class=\"pagelist\"> ";

    private static final String PAGE_END_DIV                 = " </div> ";

    private static final int    PAGE_BETWEEN_SIZE            = 4;                           // 当前页的前后页数间距

    private static final int    PAGE_FIRST_LAST_BETWEEN_SIZE = 2;

    private String              url;

    private String             pageName = "entityPage"; 

    public String getPageName() {

    return pageName;
    }


    public void setPageName(String pageName) {

    this.pageName = pageName;
    }

    public String getUrl() {

    return url;
    }

    public void setUrl(String url) {

    this.url = url;
    }

    @Override
    public int doStartTag() throws JspException {

    StringBuffer pageSb = new StringBuffer();
    Object  obj = RequestUtils.getRequest()
    .getAttribute(pageName);

    int curPage = 1;
    int totalPage = 1;   
    if(obj!=null){
    if(obj instanceof EntityPage){
    EntityPage entityPage = (EntityPage)obj;
    curPage = entityPage.getCurrentPage();
    totalPage = entityPage.getPageCount();
    }else if(obj instanceof FnEntityPage){
    FnEntityPage entityPage = (FnEntityPage)obj;
    curPage = entityPage.getCurrentPage();
    totalPage = entityPage.getPageCount();
    }
    }

    if (obj != null && totalPage>1) {

    pageSb.append(PAGE_FIRST_DIV);
    // 上一页
    if (curPage == 1) {
    pageSb.append("<span class=\"disabled\">上一页</span>");
    } else {
    String param = ""+ (curPage-1);
    pageSb.append("<a href=\"" + "javascript:page('" + param + "')\">上一页</a>");
    }

    int beginPage = curPage - PAGE_BETWEEN_SIZE;
    int endPage = curPage + PAGE_BETWEEN_SIZE;
    if (endPage > totalPage) {
    endPage = totalPage;
    }
    if (beginPage < 1) {
    beginPage = 1;
    }
    // 如果beginPage>2
    if (beginPage > PAGE_FIRST_LAST_BETWEEN_SIZE) {
    String firstParam = "" + 1;
    pageSb.append("<a href=\"" + "javascript:page('"  + firstParam    + "')\">"
    + 1
    + "</a>");
    String secondParam = "" + 2;
    pageSb.append("<a href=\"" + "javascript:page('"
    + secondParam
    + "')\">"
    + 2
    + "</a>");
    pageSb.append("...");
    }

    for (int i = beginPage; i <= endPage; i++) {
    if (curPage == i) {
    pageSb.append("<span class=\"current\">" + i + "</span>");
    } else {
    String param = "" + i;
    pageSb.append("<a href=\"" + "javascript:page('"
    + param
    + "')\">"
    + i
    + "</a>");
    }
    }

    if (endPage < (totalPage - 1)) {
    String firstParam = "" + (totalPage - 1);
    pageSb.append("...<a href=\"" + "javascript:page('"
    + firstParam
    + "')\">"
    + (totalPage - 1)
    + "</a>");
    String secondParam = "" + (totalPage);
    pageSb.append("<a href=\"" +  "javascript:page('"
    + secondParam
    + "')\">"
    + (totalPage)
    + "</a>");
    }

    // 下一页
    if (curPage == totalPage) {
    pageSb.append("<span class=\"disabled\">下一页</span>");
    } else {
    String param = "" + (curPage + 1);
    pageSb.append("<a href=\"" + "javascript:page('" + param + "')\">下一页</a>");
    }

    //处理分页请求
    pageSb.append("<script type=\"text/javascript\"> ");
    pageSb.append(" function page(curPage){" );
    pageSb.append(" var pageform = document.getElementById('pageform'); ");
    pageSb.append(" document.getElementById(\"pc.currentPage\").value=curPage; ");
    pageSb.append(" pageform.submit();  ");
    pageSb.append("}");
    pageSb.append(" </script> ");

    pageSb.append(PAGE_END_DIV);

    }
    JspWriter out = pageContext.getOut();
    try {
    out.print(pageSb.toString());
    } catch (IOException e) {            
    e.printStackTrace();
    }
    return Tag.SKIP_BODY;
    }

      

  2.   

    前面的数字固定死了,把当前的页数提交到相应的servlet或者action,大于10的页数就通过点击一次下一页,当前页数+1,提交过去