Existe-t-il un composant / tag-lib ou un code-échantillon de pagination standard prêt à l'emploi, facile à mettre en œuvre et disponible pour la pagination dans Spring MVC?
À votre santé
Existe-t-il un composant / tag-lib ou un code-échantillon de pagination standard prêt à l'emploi, facile à mettre en œuvre et disponible pour la pagination dans Spring MVC?
À votre santé
Jetez un oeil à l' PagedListHolder
et d'autres classes org.springframework.beans.support
.
Voir la JPetstore dans les échantillons de quelques exemples, par exemple, en SearchProductsController.java
:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
String keyword = request.getParameter("keyword");
if (keyword != null) {
if (!StringUtils.hasLength(keyword)) {
return new ModelAndView("Error", "message", "Please enter a keyword to search for, then press the search button.");
}
PagedListHolder productList = new PagedListHolder(this.petStore.searchProductList(keyword.toLowerCase()));
productList.setPageSize(4);
request.getSession().setAttribute("SearchProductsController_productList", productList);
return new ModelAndView("SearchProducts", "productList", productList);
}
else {
String page = request.getParameter("page");
PagedListHolder productList = (PagedListHolder) request.getSession().getAttribute("SearchProductsController_productList");
if (productList == null) {
return new ModelAndView("Error", "message", "Your session has timed out. Please start over again.");
}
if ("next".equals(page)) {
productList.nextPage();
}
else if ("previous".equals(page)) {
productList.previousPage();
}
return new ModelAndView("SearchProducts", "productList", productList);
}
}
Je cherchais un moyen de le faire aussi, mais je n'ai pas trouver n'importe quel composant standard ou taglib. Je pense principalement à cause de la pagination peut devenir très spécifique car vous avez besoin de récupérer vos données avec la pagination à partir de la base de données déjà (si vous êtes en utilisant Hibernate, vous pouvez facilement le faire en utilisant les Critères de l'API). Je suis venu avec quelque chose comme ceci:
public class Pager
{
private int page;
private int results;
private String sortOrder;
private String sortColumn;
// Getters and setters
}
@Controller
public class StuffController
{
@Autowired SomeEntityService someEntityService;
@RequestMapping("/test.html", method = Method.GET)
public void getStuffPaged(@RequestParam("id") String id, Pager pager, ModelMap mm)
{
mm.addAttribute("entities", someEntityService.get(id, pager));
}
}
Si vous demandez à présent http://domain/app/test.html?id=10&page=1&results=30&sortOrder=asc vous obtiendrez le pager Objet de votre demande.
Nul ne vient à l'esprit et Google ne révèle pas de composants spécifiques pour que (bien qu'il donne assez de beaucoup d'exemples concrets et de conseils). Mais en théorie, tout un tas de boutons et un (ou deux) paramètres de la requête sont plus que suffisantes. Puis, laissez le SQL/DB faire son travail. J'ai posté une réponse à une question similaire en JSP/Servlet/DAO contexte avant ici.
Il se résume essentiellement en passer firstrow
(indice de la première ligne à être affiché dans une page) autour comme paramètre de la requête et avoir deux boutons/liens dans la pagination formulaire/décrémente le firstrow
avec rowcount
(en nombre de lignes affichées à la fois dans une page) en combinaison avec une requête SQL qui retourne un sous-ensemble des résultats à l'aide des sous chaque LIMIT
, OFFSET
clauses, ou les sous-sélections, ou à des fonctions spécifiques, en fonction de l'id en question. Voir la aforelinked réponse pour obtenir des exemples de code et des requêtes SQL.
Avez-vous déjà entendu parler du projet Spring-DATA? Là vous avez une bonne solution en utilisant une interface de flexibilité comme Pagable. Pour moi, c’est le moyen le plus simple de réaliser une pagination propre et sans code chaud. Consultez ce lien: http://www.springsource.org/spring-data/jpa
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.