Простое разбиение на страницы в FreeMarker с Spark Framework

Я реализую простой блог, использующий Spark Framework с FreeMarker. Мне нужно реализовать разбиение на страницы, чтобы показывать только 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 &lt; 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);

Любая помощь будет оценена, спасибо заранее!

1 ответ

Обычно вы разбиваете страницы на страницы перед помещением списка в модель, потому что тогда вы можете избежать загрузки записей, которые вы все равно не будете показывать. Так что просто передайте только список записей, которые вы фактически отобразите на текущей странице (в отличие от всего списка), а также передайте pageNumber а также totalPages переменная (два числа), которую вы можете использовать в шаблоне.

Кстати, в шаблоне, art.getAuthor().getName() можно записать как art.author.name, body?substring(0,70) можно записать как body[0 .. 70],

Другие вопросы по тегам