最代码官方的gravatar头像
最代码官方 2014-09-01 23:14:28

freemarker macro实现分页实例源代码片断下载,可以指定步长

最代码的前端是通过freemarker实现的,犹记得N年前javaeye上有人喷freemarker技术的十宗罪,不过开发最代码的过程中,freemarker以其成熟完美的技术让我深深觉得其框架已经很成熟了,如果你觉得有用freemarker不爽的可以反驳。

最后给大家分享下通过freemarker macro实现的分页代码吧:

<!-- page for seo-->
<#macro page_seo_macro page url sort key>
	<#if page.hasContent()>
	<#assign step=11/>
	<#assign currentPage=(page.number+1)/>
	<div class="pagination pagination-centered">
	<ul>
		<#assign begin = currentPage - ((step - 1) / 2)/>
		<#if (begin<=0)>
			<#assign begin=1/>
		</#if>
		<#assign end = currentPage + ((step - 1) / 2)/>
		<#if (end<step)>
			<#assign end=step/>
		</#if>
		<#if (end>page.totalPages)>
			<#assign end=page.totalPages/>
		</#if>
		<#if (begin==1)>
			<#assign hasFirst=false/>
		<#else>
			<#assign hasFirst=(currentPage > (step / 2))/>
		</#if>
		<#if (end == page.totalPages)>
			<#assign hasFinal=false/>
		<#else>
			<#assign hasFinal=(currentPage < page.totalPages)/>
		</#if>
		<#if page.hasPreviousPage()>
			<li><a  class="" href="/${url}/<#if key!="">k${key}-</#if>p${currentPage-1}<#if sort!="">-s${sort}</#if>.htm">上一页</a></li>
		</#if>
		<#if (hasFirst&&page.totalPages>1)>
			<li><a href="/${url}/<#if key!="">k${key}-</#if>p1<#if sort!="">-s${sort}</#if>.htm" class="page-numbers">1</a><span class="page-numbers dots">...</span></li>
		</#if>
		<#if (page.totalPages>1)>
		<#list begin..end as p> 
			<li class="<#if p==currentPage> active</#if>"><a href="<#if p==currentPage>javascript:void(0)<#else>/${url}/<#if key!="">k${key}-</#if>p${p}<#if sort!="">-s${sort}</#if>.htm</#if>">${p}</a></li>
		</#list>
		</#if>
		<#if hasFinal>
			<li><span class="dots">...</span><a href="/${url}/<#if key!="">k${key}-</#if>p${page.totalPages}<#if sort!="">-s${sort}</#if>.htm" class="page-numbers">${page.totalPages}</a></li>
		</#if>
		<#if page.hasNextPage()>
			<li><a  class="" href="/${url}/<#if key!="">k${key}-</#if>p${currentPage+1}<#if sort!="">-s${sort}</#if>.htm">下一页</a></li>
		</#if>
	</ul>
	</div>
	</#if>
</#macro>

调用端代码:

最近分享列表:

<@javaniu_macro.page_seo_macro projects "share" "${s}" ""/>

最近问答列表

<@javaniu_macro.page_seo_macro projects "question" "${s}" ""/>

代码的运行效果

freemarker macro实现分页实例源代码片断下载,可以指定步长

结合上次的分享springmvc @RequestMapping注解伪静态技术就可以实现成完美的符合seo规则的分页代码。

其中的page对象是springdata jpa的Page对象,大家可以根据代码自行修改。


打赏

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友