25.avi 【PageModel的实现原理】

来源:互联网 发布:插画网站 知乎 编辑:程序博客网 时间:2024/06/05 05:44

 

PageModel.java

OrgManagerImpl.java

 

//查找所有子orgs, 封装在PageModel

    public PagerModel findOrgs(int parentId, int offset, int pageSize) {

      

       //获取总记录数total,所要查询的数据datas

       int total = 0;

       List datas = null;

      

       String countHql = null;

       String selectHql = null;

      

       if (parentId == 0) {

           countHql = "select count(*) from Orgnization o where o.parent is null";

           selectHql = "select o from Orgnization o where o.parent is null";

       } else {

           countHql = "select count(*) from Orgnization o where o.parent.id = " + parentId;

           selectHql = "select o from Orgnization o where o.parent.id = " + parentId;

       }

      

       total = ((Long)getSession().createQuery(countHql).uniqueResult()).intValue();

      

       datas = getSession().createQuery(selectHql)

                         .setFirstResult(offset)

                         .setMaxResults(pageSize)

                         .list();

      

       PagerModel pm = new PagerModel();

       pm.setTotal(total);

       pm.setDatas(datas);

      

       return pm;  

    }

}

 

【OrgAction.java】

protected ActionForward unspecified(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response)

           throws Exception {

 

       OrgActionForm oaf = (OrgActionForm)form;

       int offset = 0;

       try {

           offset = Integer.parseInt(request.getParameter("pager.offset"));

       } catch (Exception ignore) {

       }

       request.setAttribute("pm", orgManager.findOrgs(oaf.getParentId(),offset,10));

      

       //在主窗口内添加"返回操作"ppid

       int ppid = 0;

       if (oaf.getParentId() != 0) {

           Orgnization org = orgManager.findOrg(oaf.getParentId());

           Orgnization parent = org.getParent();

           if (null != parent) {

              ppid = parent.getId();

           }

       }

       request.setAttribute("ppid", ppid);

       return mapping.findForward("index");

    }


【呈现页面】

<!-- 可以在这里插入分页导航条 -->

<pg:pager url="org.do" items="${ pm.total }" export="currentPageNumber = pageNumber">

    <pg:param name="parentId"/>

    <pg:first>

      


原创粉丝点击