YooJAG 自动化生成代码,手动分页接口方案.

根据 YooJAG 生成的代码,默认为 displayTag 标签分页,现在,我们自己手动分页. 以"角色"列表分页为例.步骤如下:

第一步:修改ServiceBaseForm类,增加以下代码:  

	private int currentPage = 1; // 当前页

	private int totalPages = 0; // 总页数

	private int pageRecorders = DEFAULT_PAGE_LIST_SIZE;// 每页5条数据

	private int totalRows = 0; // 总数据数

	private int pageStartRow = 0;// 每页的起始数

	private int pageEndRow = 0; // 每页显示数据的终止数

	private boolean hasNextPage = false; // 是否有下一页

	private boolean hasPreviousPage = false; // 是否有前一页

	private int nextPage = 0;// 下一页的页码

	private int previousPage = 0;// 上一页的页码

	

	/**

	 * parse page number parameter

	 * @param totalRow

	 * @param currentPages

	 */

	public void parsePageIndex(int totalRow, int currentPages) {

		//

		if (0 >= totalRow) {

			return;

		}



		this.totalRows = totalRow;

		this.currentPage = currentPages;

		hasPreviousPage = false;

		if ((totalRows % pageRecorders) == 0) {

			totalPages = totalRows / pageRecorders;

		} else {

			totalPages = (totalRows / pageRecorders) + 1;

		}



		if (0 < totalPages) {

			if (1 == totalPages) // Only one page

			{

				hasPreviousPage = false;

				hasNextPage = false;

				pageStartRow = 0;

				pageEndRow = totalRows;

			} else if (currentPage == 1) // current page is the first page.

			{

				hasPreviousPage = false;

				previousPage = 0;

				hasNextPage = true;

				nextPage = currentPage + 1;



				pageStartRow = 0;

				pageEndRow = pageRecorders;



			} else if (currentPage == totalPages) // current page is the last

			// page.

			{

				hasPreviousPage = true;

				previousPage = currentPage - 1;

				hasNextPage = false;

				nextPage = currentPage;



				pageStartRow = (currentPage - 1) * pageRecorders;

				pageEndRow = totalRows;

			} else {

				hasPreviousPage = true;

				previousPage = currentPage - 1 <= 0 ? 1 : currentPage - 1;

				hasNextPage = true;

				nextPage = currentPage + 1 >= totalPages ? totalPages

						: currentPage + 1;



				pageStartRow = (currentPage - 1) * pageRecorders;

				pageEndRow = currentPage * pageRecorders;

			}

		}

		else

		{

			//initial default value

			currentPage = 1; 

			totalPages = 0; 

			pageRecorders = DEFAULT_PAGE_LIST_SIZE;

			totalRows = 0; 

			pageStartRow = 0;

			pageEndRow = 0; 

			hasNextPage = false; 

			hasPreviousPage = false; 

			nextPage = 0;

			previousPage = 0;

		}

	}

 

注意: 要增加 get/set 方法, jsp 页面才可以调用,我们定义的分页属性.

第二步:修改 ServiceAction 类.  

    /**

     *  get current page number.

     * @param request

     * @param totalRows

     * @return currentPages

     */

    public int getCurrentPages(HttpServletRequest  request, int totalRows)

    {

        int currentPages = getCurrentPageNo(request);

        

        String pageNo = request.getParameter("pageNo");

        if(null != pageNo || !"".equals(pageNo))

        {

        	if("firstPage".equals(pageNo))

        	{

        		currentPages = 1;

        	}

        	else if("previousPage".equals(pageNo))

        	{

        		currentPages = currentPages -1 == 0 ? 1 : currentPages - 1;

        	}

        	else if("nextPage".equals(pageNo))

        	{

        		currentPages = currentPages + 1 == 0 ? 1 : currentPages + 1;

        	}

        	else if("lastPage".equals(pageNo))

        	{   

        		currentPages = getTotalPages(totalRows);

        	}

        }

        return currentPages;

    }

    /**

     * get current page number

     * @param request

     * @return currentPageNumber

     */

    private int getCurrentPageNo(HttpServletRequest  request)

    {

    	int currentPageNumber = Integer.parseInt((null == request.getParameter("currentPage")) ? 

        		"1" : request.getParameter("currentPage"));

    	return currentPageNumber;

    }

    /**

     *  total page number

     * @param totalRows

     * @return totalPages

     */

    public int getTotalPages(int totalRows)

    {

   		int totalPages;

		if ((totalRows % ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE) == 0) {

			totalPages = totalRows / ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE;

		} else {

			totalPages = (totalRows / ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE) + 1;

		}

		

		return totalPages;

    }

    /**

     * get page start row number

     * @param totalRows

     * @param currentPage

     * @return pageStartRow

     */

	public int getPageStartRow(int totalRows,HttpServletRequest  request) {

		int pageStartRow = 0;

		int currentPageNumber = getCurrentPages(request, totalRows);

		int totalPages = getTotalPages(totalRows);

		if (0 < totalPages) {

			if (1 == totalPages) // Only one page

			{

				pageStartRow = 0;				

			} 

			else if (currentPageNumber == 1) // current page is the first page.

			{

				pageStartRow = 0;				



			} else if (currentPageNumber == totalPages) // current page is the last page.

			{



				pageStartRow = (currentPageNumber - 1) * ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE;

				

			} else {

				pageStartRow = (currentPageNumber - 1) * ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE;				

			}

		}

		return pageStartRow + 1;

	}

	/**

	 * get page end row number.

	 * @param totalRows

	 * @param currentPage

	 * @return pageEndRow

	 */

	public int getPageEndRow(int totalRows,HttpServletRequest  request) {

		int pageEndRow = 0;

		int currentPageNumber = getCurrentPages(request, totalRows);

		int totalPages = getTotalPages(totalRows);

		if (0 < totalPages) {

			if (1 == totalPages) // Only one page

			{

				pageEndRow = totalRows;				

			} 

			else if (currentPageNumber == 1) // current page is the first page.

			{

				pageEndRow = ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE;				



			} else if (currentPageNumber == totalPages) // current page is the last page.

			{

				pageEndRow = totalRows;

				

			} else {				

				pageEndRow = currentPageNumber * ServiceBaseForm.DEFAULT_PAGE_LIST_SIZE;

			}

		}

		return pageEndRow ;

	}

第三步:修改 roles.jsp 页面.  

   <logic:greaterThan name='rolesSearchForm' property='totalPages' value="0">    	

	    <input type="hidden" name="pageNo" id="pageNo" value="">	    

	    <input type="hidden" name="currentPage" id="currentPage" value="<bean:write name="rolesSearchForm" property="currentPage"></bean:write>">

	    <logic:equal name="rolesSearchForm" property="hasPreviousPage" value="true">

					<html:submit property="Search" styleClass="button" οnclick="javascript:document.all('pageNo').value = 'firstPage';"><< </html:submit>

	   			<html:submit property="Search" styleClass="button" οnclick="javascript:document.all('pageNo').value = 'previousPage';">< </html:submit>

	   	</logic:equal>

	   	<logic:equal name="rolesSearchForm" property="hasPreviousPage" value="false">

					<html:submit property="Search" styleClass="button" disabled="true"><< </html:submit>

	   			<html:submit property="Search" styleClass="button" disabled="true">< </html:submit>

	   	</logic:equal>

	   	<bean:write name="rolesSearchForm" property="currentPage"></bean:write> Pages	   	

	   	<logic:equal name="rolesSearchForm" property="hasNextPage" value="true">

				  <html:submit property="Search" styleClass="button" οnclick="javascript:document.all('pageNo').value = 'nextPage';">> </html:submit>

	   			<html:submit property="Search" styleClass="button" οnclick="javascript:document.all('pageNo').value = 'lastPage';"> >></html:submit>

			</logic:equal>

	   	<logic:equal name="rolesSearchForm" property="hasNextPage" value="false">

					<html:submit property="Search" styleClass="button" disabled="true"> > </html:submit>

	   			<html:submit property="Search" styleClass="button" disabled="true"> >> </html:submit>

	   	</logic:equal>		

   </logic:greaterThan>

第四步:修改 InitRolesSearchAction 类的 doPerform 方法实现.            

 



int startIndex = getPageStartRow(totalRows, request);

int endIndex = getPageEndRow(totalRows, request);

rolesList = getAuthManagerDaoService().getRolesList(startIndex, endIndex);



totalRows = rolesList.size();



int pagesNumber = getCurrentPages(request, totalRows);

((RolesSearchForm) actionForm).parsePageIndex(totalRows, pagesNumber );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值