`

struts下的分页实现

阅读更多
ActionForm 基类 BaseForm的代码如下:
/**
 * <pre>
 * Title: 		BaseForm.java
 * Project: 	taxs_Admin
 * Type:		com.tenpay.taxs.form.BaseForm
 * Author:		ben.liu
 * Create:	 	Apr 8, 2008 3:03:01 PM
 * Copyright: 	Copyright (c) 2008
 * Company:		
 * <pre>
 */
package com.tenpay.taxs.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/**
 * <pre>
 * </pre>
 * @author ben.liu
 * @version 1.0, Apr 8, 2008
 */
public class BaseForm extends ActionForm
{
	/*
	 * 当前页数
	 */
	private int currentPage ;

	/*
	 * 最大页数
	 */
	private int maxPage;
	/*
	 * 最大记录数
	 */
	private int sumCount;
	/*
	 * 跳到第几页
	 */
	private int searchPage;
	/*
	 * 页面走向
	 */
	private String orientation;

	public String toString()
	{
		StringBuffer sb = new StringBuffer("");
		sb.append("{maxPage=").append(maxPage).append(",");
		sb.append("sumCount=").append(sumCount).append(",");
		sb.append("searchPage=").append(searchPage).append(",");
		sb.append("currentPage=").append(currentPage).append(",");
		sb.append("orientation=").append(orientation).append("}");
		return sb.toString();
	}

	public int getCurrentPage()
	{
		return this.currentPage;
	}

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

	public int getMaxPage()
	{
		return this.maxPage;
	}

	public void setMaxPage(int maxPage)
	{
		this.maxPage = maxPage;
	}

	public int getSumCount()
	{
		return this.sumCount;
	}

	public void setSumCount(int sumCount)
	{
		this.sumCount = sumCount;
	}

	public int getSearchPage()
	{
		return this.searchPage;
	}

	public void setSearchPage(int searchPage)
	{
		this.searchPage = searchPage;
	}

	public String getOrientation()
	{
		return this.orientation;
	}

	public void setOrientation(String orientation)
	{
		this.orientation = orientation;
	}

	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request)
	{
		this.currentPage=1;
		this.maxPage =0;
		this.orientation ="";
		this.sumCount=0;
		this.searchPage=0;
	}
}

所有的要分页的Form都要求继承它。
Action 基类 BaseAction的代码如下:
/**
 * <pre>
 * Title: 		BaseAction.java
 * Project: 	AgentPortal
 * Type:		com.tenpay.taxs.action.base.BaseAction
 * Author:		liubenling
 * Create:	 	2007-6-6 下午05:59:07
 * Copyright: 	Copyright (c) 2007
 * Company:
 * <pre>
 */
package com.tenpay.taxs.action.base;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.tenpay.taxs.form.BaseForm;
import com.tenpay.taxs.util.help.LogFactory;

/**
 * <pre>
 * 基础Action类,所有Action类都应该继承自该类
 * </pre>
 * 
 * @author liubenling
 * @version 1.0, 2007-6-6
 */
public abstract class BaseAction extends Action
{
	private static final Logger logger = LogFactory.getLogger(BaseAction.class);

	private int pagesize;

	public int getPagesize()
	{
		return this.pagesize;
	}

	public void setPagesize(int pagesize)
	{
		this.pagesize = pagesize;
	}

	public abstract ActionForward doIt(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2,
			HttpServletResponse arg3) throws Exception;

	/*
	 * (非 Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
	 *      org.apache.struts.action.ActionForm,
	 *      javax.servlet.http.HttpServletRequest,
	 *      javax.servlet.http.HttpServletResponse)
	 */
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception
	{
		return doIt(mapping, form, request, response);
	}

	public String query(ActionForm form)
	{
		BaseForm realForm = (BaseForm) form;
		String orientation = realForm.getOrientation();
		logger.debug("上页在" + realForm.getCurrentPage() + "页");
		logger.debug("realForm.getSearchPage()=" + realForm.getSearchPage());
		logger.debug("maxPage=" + realForm.getMaxPage());
		int limit = 0;
		if (realForm.getSearchPage() > 0 && realForm.getSearchPage() <= realForm.getMaxPage())
		{
			realForm.setCurrentPage(realForm.getSearchPage());
		}
		if (realForm.getCurrentPage() <= 0)
		{
			realForm.setCurrentPage(1);
		}
		StringBuffer sqlSb = new StringBuffer(" limit "); // 返回的部分sql语句
		// 有时候从开始查询的时候并没有带orientation等参数
		// 这是第一页的情况
		if ("first".equals(orientation))
		{
			orientation = "first";
			realForm.setOrientation("first");
			realForm.setCurrentPage(1);
		} // 下面是下一页
		else if ("next".equals(orientation))
		{
			if (realForm.getCurrentPage() >= realForm.getMaxPage())
			{
				realForm.setCurrentPage(realForm.getMaxPage());
				realForm.setOrientation("end");
			}
			else
			{
				realForm.setCurrentPage(realForm.getCurrentPage() + 1);
				realForm.setOrientation("next");
			}
		} // 下面是上一页
		else if ("last".equals(orientation))
		{
			if (realForm.getCurrentPage() - 1 <= 1)
			{
				realForm.setCurrentPage(1);
				realForm.setOrientation("first");
			}
			else
			{
				realForm.setCurrentPage(realForm.getCurrentPage() - 1);
				realForm.setOrientation("last");
			}
		}
		else if ("end".equals(orientation))
		{
			realForm.setCurrentPage(realForm.getMaxPage());
			realForm.setOrientation("end");
		}
		sqlSb.append((realForm.getCurrentPage() - 1) * this.pagesize).append(",").append(this.pagesize);
		logger.debug("分页sql:" + sqlSb.toString());
		return sqlSb.toString();
	}

}

这样就可以实现分页了。
请看我的页面效果如下:

  • 大小: 1.1 MB
2
2
分享到:
评论
2 楼 senlinxue1982 2008-07-24  
顶一个,希望自己也能入门,搞个分页什么的
1 楼 422232121 2008-04-12  
不错哈,顶了啊

相关推荐

Global site tag (gtag.js) - Google Analytics