Pager-taglib

Pager-taglib,是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离支持多种风格的分页显示。 通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,它自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自 已的风格的分页页面也非常简单。
分页方式有两种:
第一种是从Action中得到一个List,在页面上通 过<pg:item>进行自动分页。
第二种是通过把 pageSize,pageNo两参数传给后台进行数据库分页。

 

pg:pager 【用来设置分页的总体参数】

                url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数

                items:总记录数,pager标签正是根据这个值来计算分页参数的

                maxPageItems:每页显示的行数,默认为10

                maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10

pg:first    【第一页的标签】export参数(相当于直接使用的变量):

                pageUrl:分页链接URL地址(最重要的)

                pageNumber:页码

                firstItem:首页第一行的索引值

                lastItem:首页最后一行的索引值

pg:pre     【上一页标签】export参数(相当于直接使用的变量):

                pageUrl:分页链接URL地址

                pageNumber:页码

                firstItem:前页页第一行的索引值

                lastItem:前页最后一行的索引值

pg:next    【下一页标签】export参数(相当于直接使用的变量):

                pageUrl:分页链接URL地址

                pageNumber:页码

                firstItem:下页页第一行的索引值

                lastItem:下页最后一行的索引值

pg:last     【最后一页标签】export参数(相当于直接使用的变量):

                pageUrl:分页链接URL地址

                pageNumber:页码

                firstItem:尾页页第一行的索引值

                lastItem:尾页最后一行的索引值

pa:param 用于设置传递参数的标签

pg:pages 可用于循环输出页码数

 

基本的设置都已经列出来了,下面是实现代码:

 

JSP:

<!-- 可以在这里插入分页导航条 -->
            <!-- 设置url,使提交的信息经过Action -->
            <pg:pager url="org.do" items="${pm.total}" export="currentPageNumber=pageNumber">
                <!-- 携带parentId,防止丢失,从而子机构无法分页 -->
                <pg:param name="parentId"/>
                <pg:first>
                    <a href="${pageUrl }">首页</a>
                </pg:first>
                <pg:prev>
                    <a href="${pageUrl }">前一页</a>
                </pg:prev>
                <!-- 显示页数 相当于一个循环 -->
                <pg:pages>
                    <c:choose>
                        <c:when test="${currentPageNumber eq pageNumber}">
                        <font color="red">${pageNumber}</font>
                        </c:when>
                        <c:otherwise>
                            <a href="${pageUrl }">${pageNumber}</a>
                        </c:otherwise>
                    </c:choose>
                </pg:pages>
                <pg:next>
                    <a href="${pageUrl }">下一页</a>
                </pg:next>
                <pg:last>
                    <a href="${pageUrl }">尾页</a>
                </pg:last>
            </pg:pager>

 

Action:

/**
     * 当没有任何参数(方法名)传入时,struts会调用unspecified方法
     * 打开机构管理主界面
     */
    protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       
        //获得页面的参数
        //即便是没有传递参数的调教请求过来,form也不会是null
        OrgActionForm oaf = (OrgActionForm)form;
       
        //设置firstPage
        int offset = 0;
        try {

            //pager.offset是pager-taglib默认参数
            offset = Integer.parseInt(request.getParameter("pager.offset"));
        } catch (RuntimeException ignore) {
        }
       
        //设置pagesize
        int pagesize = 10;
       
        // 获取分好页的机构列表,并传递到界面
        request.setAttribute("pm",orgManager.findOrgs(oaf.getParentId(),offset,pagesize));
       
        int ppid = 0;
        //parent是对于子机构列表来说
        //得到是当前点击的那个机构
        if(oaf.getParentId()!=0) {
            Organization organization = orgManager.findOrg(oaf.getParentId());
            Organization parent = organization.getParent();
            if(parent!=null) {
                ppid = parent.getId();
            }
        }
       
        request.setAttribute("ppid", ppid);
       
        return mapping.findForward("index");
    }

 

Model:

/**
     * offset:从第几行开始查找
     * pagesize:每页显示的数量
     */
    public PagerModel findOrgs(int parentId,int offset,int pagesize) {
       
        String selectCountHQL = "select count(*) from Organization o where o.parent is null";
       
        if (parentId != 0) {
            selectCountHQL = "select count(*) from Organization o where o.parent.id = " + parentId;
        }
       
        //获取总记录数
        int total = ((Long)getSession().createQuery(selectCountHQL).uniqueResult()).intValue();
       
        String selectHQL = "select o from Organization o where o.parent is null";
       
        if (parentId != 0) {
            selectHQL = "select o from Organization o where o.parent.id = " + parentId;
        }
       
        //获取当前页记录
        List datas = getSession().createQuery(selectHQL)
                                .setFirstResult(offset)
                                .setMaxResults(pagesize)
                                .list();
       
        PagerModel pm = new PagerModel();
        pm.setDatas(datas);
        pm.setTotal(total);
       
        return pm;
          
    }

你可能感兴趣的:(Pager-taglib)