2017-06-14 2 views
0

J'implémente un simple blog utilisez Spark Framework avec FreeMarker. J'ai besoin d'une mise en page pour afficher seulement 5 entrées par page, et il n'est pas nécessaire d'afficher les numéros de page, avec les boutons suivant et précédent. Cependant, je ne sais même pas par où commencer dans la pagination. Ce mon code actuel pour afficher toutes les entrées:Simple pagination dans FreeMarker avec Spark Framework

<#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> 

De plus, voici le code back-end dans le Cadre Spark:

get("/Home", (request, response) -> { 

    Map<String, Object> attributes = new HashMap<>(); 
    attributes.put("entries", entrie.getEntries()); 
    return new ModelAndView(attributes, "index.ftl"); 

}, freeMarkerEngine); 

Toute aide serait appréciée, merci à l'avance!

Répondre

0

Habituellement, vous paginez avant de mettre la liste dans le modèle, car alors vous pouvez éviter de charger les entrées que vous ne montrerez pas de toute façon. Donc simplement passer la liste des entrées que vous montrerez réellement sur la page actuelle (par opposition à la liste entière), et passez également une variable pageNumber et totalPages (deux nombres) que vous pouvez utiliser dans le modèle.

BTW, dans le modèle, art.getAuthor().getName() peut s'écrire art.author.name. body?substring(0,70) peut s'écrire body[0 .. 70].