[Java]FreemarkerのテンプレートでPaging(ページング)処理を行う

以下のようなFunctionを作った。
引数に、リスト、ページあたりに表示する行数、現在ページ数。

<#function paginator list num page>
	<#assign has_pre = false>
	<#assign has_next = false>
	<#if list?size == 0>
		<#return list>
	</#if>
	<#local start = (page - 1) * num>
	<#local end = start + num - 1>
	<#if page gt 1>
		<#assign has_pre = true>
	</#if>
	<#if end gte list?size - 1>
		<#local end = list?size - 1>
		<#assign has_next = false>
	<#else>
		<#assign has_next = true>
	</#if>
	<#return list[start..end]>
</#function>

使い方的には以下のようになる。

<#list paginator(["a", "b", "c", "d", "e"], 2, page) as item>
	${item}<br />
</#list>
<#if has_pre><a href="?page=${page - 1}">pre</a></#if>
<#if has_next><a href="?page=${page + 1}">next</a></#if>


Popularity: 39% [?]

  • Digg
  • Google Bookmarks
  • Google Reader
  • Facebook
  • Delicious
  • FriendFeed
  • Evernote
  • Twitter
  • Share/Bookmark
  1. No comments yet.

  1. No trackbacks yet.