浏览 12164 次
锁定老帖子 主题:List 分页封装及结合Struts2使用
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-18
import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.nazca.consult.consultee.web.util.Pager; import com.opensymphony.xwork2.ActionSupport; /** * 分页使用到的Action,如果其他有分页需要的action继承此Action即可使用分页功能 * * @author XiaoQuan */ public class AbstractListActioin extends ActionSupport { private static final long serialVersionUID = -4680224737445304053L; private static Log log = LogFactory.getLog(AbstractListActioin.class); public Pager makePager(String pageNumber, int total, int pageSize, int ListStep) { Pager pager = new Pager(); // 设置总数 pager.setTotal(total); // 设置每页显示多少数据 pager.setPageSize(pageSize); int pageNum = 1; if (pageNumber != null) { pageNum = Integer.parseInt(pageNumber); } // 设置当前页 pager.setCurrentPage(pageNum); // 最多显示分页页数 pager.setListStep(ListStep); // 求总页数,ceil(num)取整不小于num pager.setPagesCount((int) Math.ceil((double) pager.getTotal() / pager.getPageSize())); if (pager.getPagesCount() < pageNum) { pager.setCurrentPage(pager.getPagesCount());// 如果分页变量大总页数,则将分页变量设计为总页数 } if (pageNum < 1) { pager.setCurrentPage(1); } // 从第几页开始显示分页信息 pager.setListBegin(pager.getCurrentPage() - (int) Math.ceil((double) pager.getListStep() / 2)); if (pager.getListBegin() < 1) { pager.setListBegin(1); } // 分页信息显示到第几页 pager.setListEnd(pager.getCurrentPage() + pager.getListStep() / 2); if (pager.getListEnd() > pager.getPagesCount()) { pager.setListEnd(pager.getPagesCount()); } List<String> list = new ArrayList<String>(); for (int i = pager.getListBegin(); i < pager.getListEnd(); i++) { list.add(i + ""); } pager.setPageList(list); return pager; } } Pager类: import java.util.List; /** * * @author XiaoQuan */ @SuppressWarnings("unchecked") public class Pager { private int beginPage; private int endPage; private int currentPage; private int pageSize; private int total; private int listStep; private int listBegin; private int listEnd; private int pagesCount; private List pageList; public int getBeginPage() { return beginPage; } public void setBeginPage(int beginPage) { this.beginPage = beginPage; } public int getEndPage() { return endPage; } public void setEndPage(int endPage) { this.endPage = endPage; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public int getListStep() { return listStep; } public void setListStep(int listStep) { this.listStep = listStep; } public int getListBegin() { return listBegin; } public void setListBegin(int listBegin) { this.listBegin = listBegin; } public int getListEnd() { return listEnd; } public void setListEnd(int listEnd) { this.listEnd = listEnd; } public int getPagesCount() { return pagesCount; } public void setPagesCount(int pagesCount) { this.pagesCount = pagesCount; } public List getPageList() { return pageList; } public void setPageList(List pageList) { this.pageList = pageList; } } 2. 需要使用分页的Action类继承该类 public class GetMyQListAction extends AbstractListActioin { 中间内容略.... //获得page对象,保存到session中 Pager pageP = makePager(getPage(), total, Constants.MY_QUESTION_PAGE_N, Constants.LIST_STEP); ctx.put("pager", pageP); } 3.页面添加如下JSP内容即可 <div id="pageNavigator"> <span> <s:if test="#request.pager.currentPage > 1"> <s:url id="prePage" action="consult" includeParams="none"> <s:param name="pages" value="#request.pager.currentPage-1" /> </s:url> <s:a href="#" onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage-1})">上一页</s:a> </s:if> <s:else> <span>上一页</span> </s:else> </span> <span> <s:iterator value="#request.pager.pageList" id="pageList" status="pageNum"> <s:if test="#request.pager.currentPage == #pageList"> <b>[<s:property value="pageList" />]</b> </s:if> <s:else> <s:a href="#" onclick="javascript:GetFavoriteQList(0,%{pageList})">[<s:property value="pageList" />]</s:a> </s:else> </s:iterator> </span> <span> <s:if test="#request.pager.currentPage != #request.pager.pagesCount"> <s:url id="nextPage" action="some" includeParams="none"> <s:param name="pages" value="#request.pager.currentPage+1" /> </s:url> <s:a href="#" onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage+1})">下一页</s:a> </s:if> <s:else> <span>下一页</span> </s:else> </span> </div> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-06-24
能不能详细点阿?兄弟。javascript在哪?数据怎么取
|
|
返回顶楼 | |
发表时间:2008-06-29
function GetList(q, p){ var url = null; switch (q) { case 1: url = "A.action?page=" + p; break; default: url = "B.action?page=" + p; } window.scrollTo(0, 0); new Ajax.Request(url, { method: 'post', onSuccess: function(transport){ var favoriteQList = transport.responseText; $("favoriteQ").innerHTML = favoriteQList; }, onCreate: function(){ $("favoriteQ").innerHTML = $("loadingDiv").innerHTML; }, onFailure: function(){ $('loadingText').innerHTML = "出错啦"; $("favoriteQ").innerHTML = $("loadingDiv").innerHTML; } }); } q是列表的类型,p 是返回要获取的页数 |
|
返回顶楼 | |
发表时间:2008-06-30
能不能提供demo的源代码呢?这样看着很累,自己想实验一下
|
|
返回顶楼 | |
发表时间:2008-07-01
直接打包上传下吧
|
|
返回顶楼 | |
发表时间:2008-07-04
private List pageList; --- 这个是虾米东东?
|
|
返回顶楼 | |
发表时间:2008-07-08
嗯 ,楼上的见解和我一样,我正在做这个标签,原则上 page类只是一个控制类,指示index和size,action里不宜放太多的业务逻辑啊
|
|
返回顶楼 | |
发表时间:2008-07-08
看看rubbin先生的,业务类写的很好了
|
|
返回顶楼 | |
发表时间:2009-02-24
真麻烦 还不如
http://www.iteye.com/topic/317875 |
|
返回顶楼 | |