0

J'utilise Play framework 2.3.3. Sur une page, j'ai une liste d'entités à côté de la forme de filtre qui utilise la liaison de formulaire de jeu standard et cela fonctionne comme un charme. Mais maintenant, j'aimerais ajouter une pagination sous la liste. Le problème est de préserver les paramètres de formulaire lorsque l'utilisateur clique sur les liens du pager sous la liste ('next' ou 'prev'). Exemple similaire 'Base de données informatique' évite l'utilisation des formulaires et gère les paramètres comme les paramètres de méthode simples. Mais ma forme est assez complexe: elle se lie à case class SearchForm(purposeId: Option[Long], placeIds: Seq[Long], since: Option[Date], till: Option[Date]).Pager à côté du formulaire de recherche dans Play! 2.3.3

Quelle est la meilleure façon de gérer cette situation sans JS?

+0

Utilisez-vous un POST ou GET pour la recherche? Cela ressemble à un POST. N'utilisez pas le POST, utilisez GET et placez vos paramètres dans les paramètres de requête extraits par le routeur. Ensuite, vous pouvez utiliser le routeur inverse pour générer facilement les liens suivants/précédents comme le fait la réponse ci-dessous. –

Répondre

0

simplePaginator.scala.html (uniquement pour le test)

@(currentPage: Int, lastPage: Int, pageLink: Int => Call, width: Int = 5) 

    @link(index: Int) = { 
     <a href="@pageLink(index)">@{ 
      index + 1 
     }</a> 
    } 


    @if(lastPage > 0) { 
     <div class="pager"> 
      @link(currentPage - 1) 
      @link(currentPage + 1) 
      @link(lastPage) 
     </div> 
     <br> 
    } 

Vous devez fournir une fonction Pagelink.

GET  /page   @controllers.PageController.index(pageIndex:Int ?= 0) 
GET  /page/:pageIndex   @controllers.PageController.index(pageIndex:Int) 

Et appelez:

@simplePaginator(currentPage,lastIndex,controllers.PageController.index) 
+0

Par 'prev' /' next' je voulais dire les liens pager ci-dessous la liste, pas les boutons du navigateur. – viator

+0

Je suis passé à la pagination. Ceci est seulement simple prev/next. Vous pouvez créer une barre d'outils de pagination plus complexe avec la recherche binaire. Si vous le souhaitez, je peux ajouter un exemple d'implémentation. –

Questions connexes