分页组件

   
分页组件:
<%@ taglib prefix="page" uri="/WEB-INF/tlds/paginated.tld"%>
    <page:paginated id="1"/>

    $( "#allIepgs").click( function() {
        //所有 type="checkbox" 的 <input> 元素
        var checkboxes = $( ":checkbox");
        //所有禁用的 input 元素
        var disabled = $("input:disabled");
        if( this.checked ) {
         //所有 type="checkbox" 的 <input> 元素 都被选中
                checkboxes.attr( "checked", "checked");
                //所有禁用的 input 元素  都移除 被选中 checked
                disabled.removeAttr( "checked" );
        } else {
            //如果全选checkbox没有被选 则所有 type="checkbox" 的 <input> 元素 都为不被选中
            checkboxes.removeAttr( "checked" );
        }
    });
paginated.tld:
    
<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">    
<taglib>    
    <tlib-version>2.2.3</tlib-version>    
    <jsp-version>1.2</jsp-version>    
    <short-name>my</short-name>    
    <uri>/paginated</uri>    
    <display-name>"portalMS Pager Query"</display-name>    
        <tag>    
            <name>paginated</name>    
            <tag-class>com.coship.dhm.portalMS.common.taglib.PaginatedTag</tag-class>     
            <body-content>empty</body-content>        
            <attribute>    
                <name>pageSizeList</name>    
                <required>false</required>    
                <rtexprvalue>true</rtexprvalue>    
            </attribute>  
            <attribute>    
                <name>id</name>    
                <required>true</required>    
                <rtexprvalue>true</rtexprvalue>    
            </attribute>
        </tag>    
</taglib>  

PaginatedTag.java
/*
 * 工程名:
 * 包     名: com.xxxx.dhm.portalMS.common.taglib
 * 文 件名: PaginatedTag.java
 * 版      权:
 * 描      述: 分页标签
 * 修 改 人:
 * 修改时间:
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */
package com.xxx.dhm.portalMS.common.taglib;

import com.opensymphony.xwork2.util.ValueStack;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.components.Component;
import org.apache.struts2.views.jsp.ComponentTagSupport;

/**
 *
 * 在分页标签中定义了pageSizeList元素,是可以通过页面设置有多少种每页显示的记录数。该标签的具体使用如下:
 * 1、在jsp页面中引入:<%@ taglib prefix="page" uri="/WEB-INF/tlds/paginated.tld"%> 分页标签的TLD文件
 * 2、在分页地方加入:<page:paginated/>,默认情况不需要设置每页显示的记录数。
 * 3、如果需要设置每页显示的记录数,那么需要这样的标签设置:<page:paginated pageSizeList="10, 20, 30, 40"/>
 *
 *
 */
public class PaginatedTag extends ComponentTagSupport {

    /**
     * 序列化ID
     */
    private static final long serialVersionUID = 7788925098849152116L;
    
    /**分页组件中,下拉框列表设置*/
    private String pageSizeList;
    /**分页组件的ID号*/
    private String id;
    
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPageSizeList() {
        return pageSizeList;
    }

    public void setPageSizeList(String pageSizeList) {
        this.pageSizeList = pageSizeList;
    }

    @Override
    public Component getBean(ValueStack valueStack, HttpServletRequest request,
            HttpServletResponse response ) {
        return new PaginatedTemplateComponent( valueStack, request );
    }

    protected void populateParams() {
        super.populateParams();
        
        PaginatedTemplateComponent page = (PaginatedTemplateComponent) component;
        page.setPageSizeList(pageSizeList);
        page.setId( id );
    }
}

PaginatedTemplateComponent.java

/*
 * 工程名:
 * 包     名: com.xxxxx.dhm.portalMS.common.taglib
 * 文 件名: PaginatedTemplate.java
 * 版      权: Copyright (c) 2009 Coship All Rights Reserved.
 * 描      述: 分页组件的模板
 * 修 改 人:
 * 修改时间:
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */
package com.coship.dhm.portalMS.common.taglib;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.StrutsStatics;
import org.apache.struts2.components.Component;
import org.apache.struts2.dispatcher.StrutsRequestWrapper;
import org.apache.struts2.util.TextProviderHelper;

import com.xxxxxx.dhm.common.config.impl.XMLFactory;
import com.xxxxxx.dhm.portalMS.common.Constants;
import com.xxxxxx.dhm.portalMS.common.DebugLogHelper;
import com.xxxxxx.dhm.portalMS.common.util.PageList;
import com.opensymphony.xwork2.util.ValueStack;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

/**
 *
 * 分页组件的模板
 *     该分页组件在页面渲染的时候,向浏览器端写入一段HTML代码,该HTML代码的内容写在FreeMarker模板中。
 * 因此渲染该分页组件先通过FreeMarker引擎向模板中传入数据,然后再渲染到浏览器,由浏览器显示。
 *
 * @author  
 * @version  
 * @since  
 */
public class PaginatedTemplateComponent extends Component {
    
    /**日志记录对象*/
    private static final DebugLogHelper logger = new DebugLogHelper( PaginatedTemplateComponent.class );
    /**freemaker模板处理的对象*/
    private static final String PAGE_TEMPLATE = "page";
    /**freemaker模板名称*/
    //private static final String PAGE_TEMPLATE_NAME = "paginated.ftl";
    
    /**HTTP请求*/
    private HttpServletRequest request;
    /**分页标签的下拉列表*/
    private String pageSizeList;
    /**分页标签的ID号*/
    private String id;
    
    public PaginatedTemplateComponent(ValueStack stack, HttpServletRequest request) {
        super(stack);
        this.request = request;
    }
    
    @Override
    @SuppressWarnings( "unchecked" )
    public boolean start(Writer writer) {
        boolean result = super.start(writer);
        Map<String, Object> cont = this.getStack().getContext();
        StrutsRequestWrapper req = (StrutsRequestWrapper) cont
                .get(StrutsStatics.HTTP_REQUEST);
        this.request = req; //获取HTTP请求
        
        String url = (String) req.getAttribute("javax.servlet.forward.request_uri");
        PageList<Object> pageList = (PageList<Object>) this.getStack().findValue( "pager" );
        
        String language = Locale.getDefault().toString();
        
        PaginatedBean pagePaginatedBean = new PaginatedBean( this.id, pageList, url,language );
        initLabel(pagePaginatedBean);
        processQueryString( pagePaginatedBean );
        
        ServletContext context = request.getSession().getServletContext();
        Configuration config = (Configuration) context.getAttribute( Constants.DHM_PAGINATED_COMPONENT.getStringValue() );
        
        try {
            Template template = config.getTemplate("paginated_"+language+".ftl");
            
            Map<String, PaginatedBean> rootMap = new HashMap<String, PaginatedBean>(1);
            rootMap.put( PAGE_TEMPLATE , pagePaginatedBean);
            template.process(rootMap, writer);
            
        } catch (IOException e) {
            logger.excepFuncDebugLog( "get paginated.ftl error!!", e );
        } catch (TemplateException e) {
            logger.excepFuncDebugLog( "proccess paginated.ftl error!!", e );
        }
        
        return result;
    }
    
    /**
     * 处理查询串
     *     从HTTP请求中获取查询参数,并且封装成分页组件的查询字符串,并且将查询参数以key-value的方式在分页
     * 组件渲染到页面的时候,生成一组隐藏域。
     *
     * @param pagePaginatedBean 分页组件对象
     *
     */
    protected void processQueryString( PaginatedBean pagePaginatedBean ) {
        String queryString = getParametersAsQueryString();
        Map<String, String> hiddenMap = getParametersAsHiddenMap();
        
        pagePaginatedBean.setQueryString(queryString);
        pagePaginatedBean.setHiddenParams(hiddenMap);
    }
    
    /**
     * 初始化分页组件对象
     * @param pagePaginatedBean 分页组件对象
     */
    @SuppressWarnings( "unchecked" )
    protected void initLabel( PaginatedBean pagePaginatedBean ) {
        
        String pageSizeLabel = TextProviderHelper.getText(Constants.MSG_PORTALMS+"page.taglib.pageszie.label",Constants.MSG_PORTALMS+"page.taglib.pageszie.label",getStack());
        String totalPagesLabel = TextProviderHelper.getText(Constants.MSG_PORTALMS+"page.taglib.totalpage.label",Constants.MSG_PORTALMS+"page.taglib.totalpage.label", getStack());
        String pageSizeLabelPostfix = TextProviderHelper.getText(Constants.MSG_PORTALMS+"page.taglib.pagesize.postfix",Constants.MSG_PORTALMS+"page.taglib.pagesize.postfix",getStack());
        String totalRowlLabel = TextProviderHelper.getText(Constants.MSG_PORTALMS+"page.taglib.total.row.label",Constants.MSG_PORTALMS+"page.taglib.total.row.label",getStack());
        String jumpLabel = TextProviderHelper.getText(Constants.MSG_PORTALMS + "page.taglib.jump.label",
                Constants.MSG_PORTALMS + "page.taglib.jump.label",getStack());
        
        pagePaginatedBean.setPageSizeLabel(pageSizeLabel);
        pagePaginatedBean.setTotalRowlLabel(totalRowlLabel);
        pagePaginatedBean.setPageSizeLabelPostfix(pageSizeLabelPostfix);
        pagePaginatedBean.setJumpLabel(jumpLabel);
        pagePaginatedBean.setTotalPagesLabel(totalPagesLabel);
        
        //获取下拉框
        List<String> pageSelected = null;
        if( this.pageSizeList != null ) {
            pageSelected = XMLFactory.getValueList( this.pageSizeList );
        } else {
            pageSelected = XMLFactory.getValueList( "paginatedComponent.pageSizeList" );
        }
        
        if( pageSelected == null || pageSelected.size() == 0 ) {
            pageSelected = XMLFactory.getValueList( "10, 20, 40, 100" );
        }
        
        pagePaginatedBean.setPageSelected(pageSelected);
    }
    
    /**
     * 处理查询串
     *     从HTTP请求中获取查询参数,将查询参数以key-value的方式在分页组件渲染到页面的时候,生成一组隐藏域。
     * @return map数据类型,以key-value的方式封装查询参数。
     *
     * @return Map<String,String> map数据类型,以key-value的方式封装查询参数。
     */
    @SuppressWarnings("unchecked")
    protected Map<String, String> getParametersAsHiddenMap() {
        Map<String, Object> params = this.request.getParameterMap();
        Map<String, String> hiddenParams = new HashMap<String, String>();
        Iterator<Entry<String, Object>> iter = params.entrySet().iterator();
        while (iter.hasNext()) {
            String value = "";
            Entry<String, Object> entry = iter.next();
            String name = entry.getKey();
            //currentPage和pageSize不作为隐藏域放在form中。
            if ( "currentPage".equals( name) || "pageSize".equals( name ) || "showSuccessDialog".equals( name ) ||"queryFlag".equals( name ) ) {
                continue;
            }
            String [] values = (String[]) entry.getValue();
            if( values != null && values.length != 0 ) {
                value = values[0];
            }
            hiddenParams.put(name, value);
        }
        
        return hiddenParams;
    }
    
    /**
     * 返回查询串。
     *
     * 对HTTP请求中获取查询参数重新处理,对参数名为“currentPage”,“pageSize”这两个查询参数不做处理。
     * @return 返回String类型,代表生成的查询字符串。
     *
     * @return String 返回生成的查询字符串
     */
    @SuppressWarnings("unchecked")
    protected String getParametersAsQueryString() {
        Map<String, Object> params = this.request.getParameterMap();
        StringBuffer buffer = new StringBuffer();
        
        Iterator<Entry<String, Object>> iter = params.entrySet().iterator();
        while (iter.hasNext()) {
            Entry<String, Object> entry = iter.next();
            String name = entry.getKey();
            String value = "";
            //currentPage和pageSize已经放入查询串。
            if ( "currentPage".equals( name) || "pageSize".equals( name ) || "showSuccessDialog".equals( name )||"queryFlag".equals( name )) {
                continue;
            }
            
            String [] values = (String[]) entry.getValue();
            if( values != null && values.length != 0 ) {
                value = values[0];
                try {
                    value = URLEncoder.encode( value, Constants.PAGE_ENCODING.getStringValue() );
                } catch (UnsupportedEncodingException e) {
                    logger.excepFuncDebugLog( "encode the '"+value+"' with UTF-8 error!", e );
                }
            }
            
            buffer.append( "&" );
            buffer.append( name );
            buffer.append( "=" );
            buffer.append( value );
        }
        
        return buffer.toString();
    }
    
    public String getPageSizeList() {
        return pageSizeList;
    }

    public void setPageSizeList(String pageSizeList) {
        this.pageSizeList = pageSizeList;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

PageList.java

package com.xxxx.dhm.portalMS.common.util;

import java.util.ArrayList;
import java.util.Collection;

public class PageList<E> extends ArrayList<E> {

    /**
     *
     */
    private static final long serialVersionUID = -1232964988129963814L;
    private int totalRows = 0;
    private int totalPages = 0;
    private int pageSize = 10;
    private int currentPage = 1;
    private boolean hasPrevious = false;
    private boolean hasNext = false;
    private boolean showPageLine = false;
    
    public boolean isShowPageLine() {
        return showPageLine;
    }

    public void setShowPageLine(boolean showPageLine) {
        this.showPageLine = showPageLine;
    }

    public PageList() {
        super();
    }

    public PageList(Collection<? extends E> c) {
        super(c);
    }

    public PageList(int currentPage, int pageSize, int totalRows) {
        super(pageSize);
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalRows = totalRows;
        totalPages = totalRows / pageSize;
        int mod = totalRows % pageSize;
        if (mod > 0) {
            totalPages++;
        }
        refresh();
    }

    public void reset() {
        this.currentPage = 1;
        refresh();
    }

    public void init(int totalRows) {
        this.totalRows = totalRows;
        totalPages = ((totalRows + pageSize) - 1) / pageSize;
        refresh();
    }

    public void init(int totalRows, int pageSize) {
        this.totalRows = totalRows;
        this.pageSize = pageSize;
        totalPages = ((totalRows + pageSize) - 1) / pageSize;
        refresh();
    }

    public int getCurrentPage() {

        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;

        refresh();
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
        refresh();
    }

    public int getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
        refresh();
    }

    public int getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
        refresh();
    }

    public void first() {
        currentPage = 1;
        this.setHasPrevious(false);
        refresh();
    }

    public void previous() {
        currentPage--;
        refresh();
    }

    public void next() {
        if (currentPage < totalPages) {
            currentPage++;
        }
        refresh();
    }

    public void last() {
        currentPage = totalPages;
        this.setHasNext(false);
        refresh();
    }

    public boolean isHasNext() {
        return hasNext;
    }

    public void setHasNext(boolean hasNext) {
        this.hasNext = hasNext;
    }

    public boolean isHasPrevious() {
        return hasPrevious;
    }

    public void setHasPrevious(boolean hasPrevious) {
        this.hasPrevious = hasPrevious;
    }

    public void refresh() {
        if (totalPages <= 1) {
            hasPrevious = false;
            hasNext = false;
        } else if (currentPage == 1) {
            hasPrevious = false;
            hasNext = true;
        } else if (currentPage == totalPages) {
            hasPrevious = true;
            hasNext = false;
        } else {
            hasPrevious = true;
            hasNext = true;
        }

        if (currentPage <= 0) {
            currentPage = 1;
        }
        
        //有下一页,且当每页条数大于10,则显示上面的分页栏
        if ( hasNext && pageSize > 10 ) {
            this.showPageLine = true;
        }
        
        //没有下一页,而且当每页条数小于10,则不显示上面的分页栏
        if ( !hasNext && pageSize < 10 ) {
            this.showPageLine = false;
        }
        
        //没有下一页,而且每页条数大于10,则显示上面的分页栏
        if ( !hasNext && pageSize > 10 ) {
            this.showPageLine = true;
        }
    }
}
PaginatedBean.java
/*
 * 工程名:
 * 包     名: com.xxxx.dhm.portalMS.common.taglib
 * 文 件名: PaginatedBean.java
 * 版      权:
 * 描      述: 封装了分页组件使用的JavaBean
 * 修 改 人:
 * 修改时间:
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */
package com.coship.dhm.portalMS.common.taglib;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.coship.dhm.portalMS.common.util.PageList;

/**
 *
 * 分页组件的JavaBean
 *
 * @author  
 * @version  
 * @since  
 */
public class PaginatedBean implements Serializable {

    /**
     * 序列ID
     */
    private static final long serialVersionUID = -5437380701828731946L;
    
    /**记录总数*/
    private int totalRows = 0;
    /**总页数*/
    private int totalPages = 0;
    /**每页显示的记录数*/
    private int pageSize = 10;
    /**当前页*/
    private int currentPage = 1;
    /**请求的url*/
    private String url;
    /**查询字符串*/
    private String queryString;
    /**分页标签的ID号*/
    private String id;
    /**分页的记录数*/
    private PageList<Object> pageList;
    /**隐藏域数*/
    private Map<String, String> hiddenParams;
    /**每页显示大小的下拉框*/
    private List<String> pageSelected;
    
    /**用于页面显示“每页”的标签说明*/
    private String pageSizeLabel;
    /**用于页面显示“总共”的标签说明*/
    private String totalRowlLabel;
    /**用于页面显示“页数”的标签说明*/
    private String totalPagesLabel;
    /**用于页面显示“条”的标签说明*/
    private String pageSizeLabelPostfix;
    /**用于页面显示“转到”的标签说明*/
    private String jumpLabel;
    
    /**用于页面根据语言选择图片*/
    private String language;
    
    public PaginatedBean() {}
    
    public PaginatedBean( String id, PageList<Object> pageList, String url,String language ) {
        if ( pageList != null ) {
            this.pageList = pageList;
            this.totalPages = pageList.getTotalPages();
            this.totalRows = pageList.getTotalRows();
            this.pageSize = pageList.getPageSize();
            this.currentPage = pageList.getCurrentPage();
        } else {
            this.pageList = new PageList<Object>();
        }
        this.id = id;
        this.url = url;
        this.language = language;
        this.hiddenParams = new HashMap<String, String>();
    }
    
    public int getTotalRows() {
        return totalRows;
    }
    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }
    public int getTotalPages() {
        return totalPages;
    }
    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public PageList<Object> getPageList() {
        return pageList;
    }
    public void setPageList(PageList<Object> pageList) {
        this.pageList = pageList;
    }

    public Map<String, String> getHiddenParams() {
        return hiddenParams;
    }

    public void setHiddenParams(Map<String, String> hiddenParams) {
        this.hiddenParams = hiddenParams;
    }

    public List<String> getPageSelected() {
        return pageSelected;
    }

    public void setPageSelected(List<String> pageSelected) {
        this.pageSelected = pageSelected;
    }

    public String getPageSizeLabel() {
        return pageSizeLabel;
    }

    public void setPageSizeLabel(String pageSizeLabel) {
        this.pageSizeLabel = pageSizeLabel;
    }

    public String getTotalRowlLabel() {
        return totalRowlLabel;
    }

    public void setTotalRowlLabel(String totalRowlLabel) {
        this.totalRowlLabel = totalRowlLabel;
    }

    public String getPageSizeLabelPostfix() {
        return pageSizeLabelPostfix;
    }

    public void setPageSizeLabelPostfix(String pageSizeLabelPostfix) {
        this.pageSizeLabelPostfix = pageSizeLabelPostfix;
    }

    public String getJumpLabel() {
        return jumpLabel;
    }

    public void setJumpLabel(String jumpLabel) {
        this.jumpLabel = jumpLabel;
    }

    public String getTotalPagesLabel() {
        return totalPagesLabel;
    }

    public void setTotalPagesLabel(String totalPagesLabel) {
        this.totalPagesLabel = totalPagesLabel;
    }

    public String getQueryString() {
        return queryString;
    }

    public void setQueryString(String queryString) {
        this.queryString = queryString;
    }

    public String getLanguage()
    {
        return language;
    }

    public void setLanguage(String language)
    {
        this.language = language;
    }
    
}

templates/paginated_zh_CN.ftl

<#if page.totalPages != 0 >
<form action="${page.url}" method="post" id="page_queryActionForm_${page.id}" οnsubmit="return paginated_form_submit_${page.id}(this, ${page.id});">

<#list page.hiddenParams.keySet() as key>
        <#assign item = page.hiddenParams[key]>
        <input type="hidden" name="${key}" value="${item}" />
</#list>
<div class="right">
    <img src="../images/in_r.jpg" width="5" height="30" />
</div>
<div class="page">
    <div id="paginated_total_page_id" style="display:none;"> ${page.totalPagesLabel}${page.currentPage?c}/${page.totalPages?c}</div>
    <div>
        
        <#if page.currentPage == page.totalPages>
            <#if page.totalPages == 1>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;&lt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act1" disabled>&gt;</a>  
                <a href='${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}' class="act1" disabled>&gt;&gt;</a>
            <#else>
                <a href='${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}' class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;&gt;</a>
            </#if>
        <#else>
            <#if page.currentPage == 1 >
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;&lt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage+1}&pageSize=${page.pageSize}" class="act">&gt;</a>  
                <a href='${page.url}?${page.queryString}&currentPage=${page.totalPages}&pageSize=${page.pageSize}' class="act">&gt;&gt;</a>
            <#elseif page.currentPage == page.totalPages>
                <a href='${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}' class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;&gt;</a>
            <#else>
                <a href='${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}' class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage+1}&pageSize=${page.pageSize}" class="act">&gt;</a>  
                <a href='${page.url}?${page.queryString}&currentPage=${page.totalPages}&pageSize=${page.pageSize}' class="act">&gt;&gt;</a>
            </#if>
        </#if>
    </div>
    <div>${page.jumpLabel}<input type="text" name="currentPage" value="${page.currentPage?c}" size="2" class="input" id="page_currentPage_${page.id}"/></div>
    <div>
        <input type="image" src="../images/lisure_${page.language}.jpg" class="but" id="page_queryActionButton_${page.id}" οnclick="paginated_button_submit_${page.id}(this, ${page.id});"/>
    </div>
</div>
<div class="page">
    <div>${page.pageSizeLabel}</div>
    <div id="con_psbox">
        <select class="page_selectbox" name="pageSize" id="paginated_pageSize_${page.id}" οnchange="paginated_pageSize_change_${page.id}( this, ${page.id} );">
            <#list page.pageSelected as pageSize>
                <option value="${pageSize}" <#if pageSize?eval == page.pageSize>selected="selected"</#if>>${pageSize}</option>
            </#list>
        </select> <span>${page.pageSizeLabelPostfix}</span>
    </div>
</div>
<div class="page">
    <div>${page.totalRowlLabel}${page.totalRows?c}${page.pageSizeLabelPostfix}/${page.totalPages?c}${page.totalPagesLabel}</div>
</div>
</form>
<script type="text/javascript" src="../js/dialogShow.js"></script>
<script type="text/javascript">
    function isNaturalNumber( value ) {
        if ( value == null ) {return false;}
        if ( value == '' || value == null ) {return false;}
        if (/^[0-9]+$/.test( value ) && ( value > 0)) {
            return true;
        } else  {  
            return false;
        }
    }
    function paginated_pageSize_change_${page.id}(select,id) {
        $( "#page_currentPage_" + id ).val(1);
        var form = $("#page_queryActionForm_" + id);
        $( form ).submit();
    }
    
    function paginated_button_submit_${page.id}( button,id ) {
        var input = $( "#page_currentPage_" + id ).val();
        var form = $("#page_queryActionForm_" + id);
        if ( !isNaturalNumber (input) ) {
            showText('信息提示','当前页应该是正整数,请重新输入!',400,200,0,false);
            form[0].onsubmit = function(){ return false; };
        } else {
            var div = $( button ).parent().prev();
            var totalLabel = div.prev().prev().html();
            var totalPage = totalLabel.split( "/" )[1];
            if ( parseInt(input) > parseInt(totalPage) ) {
                showText('信息提示','当前页不能大于总页数,请重新输入!',400,200,0,false);
                form[0].onsubmit = function(){ return false; };
            } else {
                form[0].onsubmit = function(){ return true; };
            }
        }
    }
    
    function paginated_form_submit_${page.id}( f, id ) {
        var input = $( "#page_currentPage_" + id ).val();
        var form = $( f );
        if ( !isNaturalNumber (input) ) {
            showText('信息提示','当前页应该是正整数,请重新输入!',400,200,0,false);
            return false;
        } else {
            var div = $( "#paginated_total_page_id" );    
            var totalLabel = div.html();
            var totalPage = totalLabel.split( "/" )[1];
            if ( parseInt(input) > parseInt(totalPage) ) {
                showText('信息提示','当前页不能大于总页数,请重新输入!',400,200,0,false);
                return false;
            } else {
                return true;
            }
        }
    }
</script>
<#else>
<div class="right">
<img height="30" width="5" src="../images/in_r.jpg"/>
</div>
</#if>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值