s2シリーズでページング
ソースのメモ。後できちんと纏める。
package examples.jsf.s2jsf.foreach2.view.action.impl; import java.util.ArrayList; import java.util.List; import org.seasar.dao.pager.PagerViewHelper; import examples.jsf.s2jsf.foreach2.bean.ItemConditionDto; import examples.jsf.s2jsf.foreach2.bean.ItemDto; import examples.jsf.s2jsf.foreach2.bean.PageDto; import examples.jsf.s2jsf.foreach2.view.action.PagenationInitAction; public class PagenationInitActionImpl implements PagenationInitAction { private Integer offset; private ItemConditionDto itemConditionDto; private PagerViewHelper pagerViewHelper; private List itemList; private List pageList; // setter public void setOffset(Integer offset) { this.offset = offset; } public void setItemConditionDto(ItemConditionDto itemConditionDto) { this.itemConditionDto = itemConditionDto; } // getter public PagerViewHelper getPagerViewHelper() { return pagerViewHelper; } public List getItemList() { return itemList; } public List getPageList() { return pageList; } // method public String initalize() { if (offset != null) { itemConditionDto.setOffset(offset.intValue()); } else { itemConditionDto.setOffset(0); } if (itemConditionDto.getLimit() <= 0) { itemConditionDto.setLimit(10); } itemList = logic_getList(itemConditionDto); pagerViewHelper = new PagerViewHelper(itemConditionDto); pageList = new ArrayList(); for (int i = 0; i <= pagerViewHelper.getLastPageIndex(); i++) { PageDto page = new PageDto(); page.setOffset(i); pageList.add(page); } return null; } private List logic_getList(ItemConditionDto conditionDto) { List list = new ArrayList(); int itemCount = 50; for (int i = 0; i < itemCount; i++) { ItemDto itemDto = new ItemDto(); itemDto.setName("item" + i); list.add(itemDto); } conditionDto.setCount(itemCount); return list; } }
<html xmlns:m="http://www.seasar.org/maya" m:action="#{pagenationInitAction.initalize}"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31j"/> <title>ページング</title> </head> <body> <h1><a href="pagenation.html">ページング</a></h1> <p> offset:<span m:value="#{offset}"></span><br/> </p> <h2>forEach</h2> <form> <table border="0"> <tr> <td> 該当件数:<span m:value="#{pagerViewHelper.count}"/>件 </td> <td> <span m:rendered="#{pagerViewHelper.prev}"> <a href="pagenation.html" m:action="pagenation"> <span m:inject="f:param" m:name="offset" m:value="#{pagerViewHelper.prevOffset}"/> <前の<span m:value="#{pagerViewHelper.limit}">10</span>件 </a> </span> <span m:rendered="#{!pagerViewHelper.prev}"> <前の<span m:value="#{pagerViewHelper.limit}">10</span>件 </span> </td> <span m:inject="s:forEach" m:items="#{pageList}" m:var="page" m:varIndex="pageIndex"> <td> <span m:rendered="#{pageIndex == pagerViewHelper.pageIndex}"> [<span m:value="#{page.no}">1</span>] </span> <span m:rendered="#{pageIndex != pagerViewHelper.pageIndex}"> <a href="pagenation.html" m:action="pagenation"> <span m:inject="f:param" m:name="offset" m:value="#{pageIndex * 10}"/> <span m:value="#{page.no}">1</span> </a> </span> </td> </span> <td> <span m:rendered="#{pagerViewHelper.next}"> <a href="pagenation.html" m:action="pagenation"> <span m:inject="f:param" m:name="offset" m:value="#{pagerViewHelper.nextOffset}"/> 次の<span m:value="#{pagerViewHelper.limit}">10</span>件> </a> </span> <span m:rendered="#{!pagerViewHelper.next}"> 次の<span m:value="#{pagerViewHelper.limit}">10</span>件> </span> </td> </tr> </table> </form> <p> </p> </body> </html>