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}"/>件&nbsp;
	</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}"/>
				&lt;前の<span m:value="#{pagerViewHelper.limit}">10</span>件
			</a>
		</span>
		<span m:rendered="#{!pagerViewHelper.prev}">
				&lt;前の<span m:value="#{pagerViewHelper.limit}">10</span>件
		</span>
		&nbsp;
	</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>
		&nbsp;
		<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>件&gt;
			</a>
		</span>
		<span m:rendered="#{!pagerViewHelper.next}">
				次の<span m:value="#{pagerViewHelper.limit}">10</span>件&gt;
		</span>
	</td>
</tr>
</table>
</form>

<p>
</p>

</body>

</html>