有限会社 ドルフィン


Table pagination

一覧表のページング処理
使用クラス
  org.springframework.beans.support.PagedListHolder
  org.springframework.beans.support.MutableSortDefinition

初期表示
//初期表示						
ArrayList<ListRow> list = getGetListService().getListService();						
//リストホルダー						
PagedListHolder<ListRow> allList = new PagedListHolder<ListRow>(list);
						
allList.setPageSize(5);	//1ページのページ数を設定
allList.setSort(new MutableSortDefinition("name", true, true));	//ソート定義
allList.resort();		//ソート

request.getSession().setAttribute("listData_all", allList);	//全データ
request.setAttribute("listData", allList);	//最初のページ
				
Next/Prev
//ページ切り替え				
PagedListHolder allList = (PagedListHolder) request.getSession().getAttribute("listData_all");
if (allList == null) {				
	request.setAttribute("message", "Your session has timed out. Please start over again.");			
	return mapping.findForward("failure");			
}				
allList.nextPage();		//次ページ
request.setAttribute("listData", allList);
				
				
				
allList.previousPage();		//前のページ
				
Jump Page
//ページ切り替え				
PagedListHolder allList = (PagedListHolder) request.getSession().getAttribute("listData_all");
if (allList == null) {				
	request.setAttribute("message", "Your session has timed out. Please start over again.");			
	return mapping.findForward("failure");			
}				
allList.setPage(2);
request.setAttribute("listData", allList);	
				
Sort
//ページ切り替え				
PagedListHolder allList = (PagedListHolder) request.getSession().getAttribute("listData_all");
if (allList == null) {				
	request.setAttribute("message", "Your session has timed out. Please start over again.");			
	return mapping.findForward("failure");			
}				
MutableSortDefinition sortDef = (MutableSortDefinition)allList.getSort();
sortDef.setProperty("name");		
sortDef.setAscending(false);			//desc
allList.resort();
request.setAttribute("listData", allList);
				
				
JSP Source

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Paging Test</title>
</head>
<body>
	<table>
		<thead>
			<tr>
				<th>ID</th>
				<th>Name</th>
				<th>Tel</th>
			</tr>
		</thead>
		<tbody>
			<c:forEach var="varList" items="${listData.pageList}">
				<tr>
  					<td><c:out value="${varList.id}"/></td>
  					<td><c:out value="${varList.name}"/></td>
  					<td><c:out value="${varList.tel}"/></td>
  				</tr>
			</c:forEach>
		</tbody>
	</table>
	<table>
		<tbody>
			<tr>
				<td>
					<c:if test="${!listData.firstPage}">
						<a href="?page=previous"><B><< Prev</B></a>
					</c:if>
				</td>
				<td>
					<c:if test="${!listData.lastPage}">
						<a href="?page=next"><B>Next >></B></a>
					</c:if>
				</td>
			</tr>
			<tr>
				<td>
					Page Jump
				</td>
				<td>
					<a href="?page=no1">1</a>
					<a href="?page=no2">2</a>
					<a href="?page=no3">3</a>
					<a href="?page=no4">4</a>
				</td>
			</tr>
			<tr>
				<td>
					<c:out value="${listData.page + 1}"/>  /  <c:out value="${listData.pageCount}"/>
				</td>
			</tr>
			<tr>
				<td>Sort Name</td>
				<td><a href="?page=sortNameAsc">asc</a></td>
				<td><a href="?page=sortNameDesc">desc</a></td>
			</tr>
			<tr>
				<td>Sort Tel</td>
				<td><a href="?page=sortTelAsc">asc</a></td>
				<td><a href="?page=sortTelDesc">desc</a></td>
			</tr>
			<tr>
				<td>
					Sort Status : <c:out value="${listData.sort.property}"/> ,
					<c:if test="${listData.sort.ascending}">asc</c:if>
					<c:if test="${!listData.sort.ascending}">desc</c:if>
				</td>
			</tr>
		</tbody>
	</table>
</body>
</html>
				
Struts Action Source
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		String page = request.getParameter("page");
		if(page == null){
			//初期表示
			ArrayList list = getGetListService().getListService(1);
			//リストホルダー
			PagedListHolder allList = new PagedListHolder(list);

			allList.setPageSize(5);	//1ページのページ数を設定
			allList.setSort(new MutableSortDefinition("name", true, true));	//ソート定義
			allList.resort();	//ソート
			request.getSession().setAttribute("listData_all", allList);	//全データ
			request.setAttribute("listData", allList);	//最初のページ
		}else{
			//ページ切り替え
			PagedListHolder allList = (PagedListHolder) request.getSession().getAttribute("listData_all");
			if (allList == null) {
				request.setAttribute("message", "Your session has timed out. Please start over again.");
				return mapping.findForward("failure");
			}
			if ("next".equals(page)) {
				allList.nextPage();
			}else if ("previous".equals(page)) {
				allList.previousPage();
			}else if ("sortNameAsc".equals(page)) {
				MutableSortDefinition sortDef = (MutableSortDefinition)allList.getSort();
				sortDef.setProperty("name");
				sortDef.setAscending(true);	//asc
				allList.resort();
			}else if ("sortNameDesc".equals(page)) {
				MutableSortDefinition sortDef = (MutableSortDefinition)allList.getSort();
				sortDef.setProperty("name");
				sortDef.setAscending(false);	//desc
				allList.resort();
				・
				・
				・
			}else if ("no1".equals(page)) {
				allList.setPage(0);
				・
				・
			}
			request.setAttribute("listData", allList);	//次/前のページ
		}
		return mapping.findForward("success");
	}
				

▲ページ先頭へ