我用FreeMarker实现了一个简单的博客Spark Framework。我需要实现分页,以便每页仅显示 5 个条目,并且无需显示页码,使用下一个和上一个按钮就可以了。但是,我什至不知道从哪里开始分页。这是我当前的代码来显示所有条目:
<#list entries as art>
<h2>
<a href="/Entrada/${art_index}">${art.getTitle()}</a>
</h2>
<p>
Author: <a href="">${art.getAuthor().getName()}</a>
</p>
<p><span class="glyphicon glyphicon-time"></span>${art.getDate()}</p>
<hr>
<#assign body=art.getBody()>
<#if body?length < 70>
${body}
<#else>
${body?substring(0,70) + "..."}
</#if>
<br><br>
<a class="btn btn-primary" href="/Entrada/${art_index}">Read More<span class="glyphicon glyphicon-chevron-right"></span></a>
<hr>
</#list>
另外,下面是Spark Framework中的后端代码:
get("/Home", (request, response) -> {
Map<String, Object> attributes = new HashMap<>();
attributes.put("entries", entrie.getEntries());
return new ModelAndView(attributes, "index.ftl");
}, freeMarkerEngine);
任何帮助将不胜感激,提前感谢!
通常在将列表放入模型之前进行分页,因为这样就可以避免加载无论如何都不会显示的条目。因此,只需传递您将在当前页面上实际显示的条目列表(而不是整个列表),并且还传递可以在模板中使用的pageNumber
和totalPages
变量(两个数字)。
顺便说一句,在模板中,art.getAuthor().getName()
可以写成art.author.name
.body?substring(0,70)
可以写成body[0 .. 70]
。