Gibt es eine standardmäßige, einfach zu implementierende standardmäßige Paginierungskomponente/tag-lib oder Codebeispiel für die Paginierung in Spring MVC?So implementieren Sie die Seitennummerierung in Spring MVC 3
Antwort
Werfen Sie einen Blick auf und andere Klassen von org.springframework.beans.support
.
Siehe den JPet-Speicher in den Beispielen für einige Beispiele, z. in 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);
}
}
Ich suchte nach einer Möglichkeit, das zu tun, fand aber keine Standardkomponente oder Taglib. Ich denke hauptsächlich deshalb, weil das Paging sehr spezifisch werden kann, da Sie Ihre Daten bereits mit Paging aus der Datenbank abrufen müssen (wenn Sie Hibernate verwenden, können Sie dies problemlos mit der Criteria-API tun). Ich kam mit so etwas wie dies oben:
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));
}
}
Wenn Sie jetzt eine Anfrage an http://domain/app/test.html?id=10&page=1&results=30&sortOrder=asc
ausführen werden Sie den Pager-Objekt in Ihrer Anfrage erhalten.
Keiner kommt in den Sinn und Google offenbart auch keine spezifischen Komponenten dafür (obwohl es ziemlich konkrete Beispiele und Hinweise gibt). Aber theoretisch sind nur ein paar Knöpfe und ein (oder zwei) Anfrageparameter mehr als ausreichend. Dann lass die SQL/DB ihre Arbeit machen. Ich habe eine Antwort auf ähnliche Frage in JSP/Servlet/DAO Kontext vor here geschrieben.
siedet im Allgemeinen nach unten firstrow
passiert (Index der ersten Reihe in einer Seite angezeigt werden), um als Anforderungsparameter ist und zwei Tasten/Links in der Paginierung Form, die in/dekrementiert die firstrow
mit rowcount
(Menge der Zeilen angezeigt sofort in einer Seite) in Kombination mit einer SQL-Abfrage, die eine Teilmenge der Ergebnisse mit Hilfe von unter LIMIT
, OFFSET
Klauseln, Subselects, oder bestimmte Funktionen, abhängig von der betreffenden DB zurückgibt. Detaillierte Beispiele für Code und SQL-Abfragen finden Sie in der oben angegebenen Antwort.
Haben Sie jemals von dem Spring Data JPA-Projekt gehört? Es gibt eine schöne flexible Lösung mit der Pagable-Schnittstelle. Ich habe festgestellt, dass dies der einfachste Weg ist, um eine saubere, vorlagenfreie Paginierung zu erreichen. Check out mehr unter Spring Data JPA homepage.
Ich schaute in diesen Link und fand nichts herausspringen zu diesem Zweck – mmcrae
Here's a link to the Spring Data JPA reference docs, wo sie eine sehr saubere Herangehensweise an Web-Paginierung haben.
Ehrfürchtig, danke. Gibt es Unterstützung für die Suche nach Spalten? – mmcrae
Ja. Repos unterstützen findByXxx(), findByXxx (Pageable) usw., wobei xxx die Spalte ist. –
Ich habe vor einiger Zeit eine Open-Source-Java-Bibliothek veröffentlicht, die sich auf Paginierung mit Federrahmen konzentriert.
Obwohl es nicht sehr erfolgreich gewesen ist, könnte vielleicht jemand daran interessiert sein, es zu versuchen.
Es gibt Beispiele dafür mit
Die Online-Beispiele etwas veraltet verwenden, laden Sie besser die jdal-Proben-Datei von sourceforge.
- 1. Seitennummerierung in Codeigniter 3
- 2. Spring MVC - Implementieren aerospike Sitzung
- 3. Spring 3 JSON mit MVC
- 4. Direkte Feldzugang in Spring MVC 3
- 5. So implementieren Sie mehrere Auswahl in MVC 3 mit 'currently.js' Plugin
- 6. So implementieren Sie die Lokalisierung in web.sitemap
- 7. So implementieren Sie die Einzelauswahl in RecyclerView?
- 8. So implementieren Sie die Ablaufverfolgung in .net
- 9. So implementieren Sie die Bestellungsanalyse in MATLAB
- 10. So implementieren Sie die Summation in GAMS
- 11. So implementieren Sie die Authentifizierung in WebService
- 12. So implementieren Sie die Barrierefreiheit in Java
- 13. So implementieren Sie benutzerdefinierte Authentifizierung in ASP.NET MVC 5
- 14. So implementieren Sie Suchfunktionen in ASP.NET MVC-Anwendungen
- 15. So blenden Sie die Seitennummerierung der Bootstrap-Tabelle
- 16. So mappen Sie mehrere Controller in Spring MVC
- 17. So implementieren Sie Openid Connect und Spring Security
- 18. Seitennummerierung in CouchDB?
- 19. jQuery load() und Spring 3 MVC
- 20. So zeigen Sie ein externes Bild in MVC an 3
- 21. vergleichen spring mvc 3 und struts 2
- 22. Schlechte Anfrage (404) mit Spring MVC 3
- 23. So implementieren Anmeldung Throttling mit Spring Security?
- 24. So implementieren Sie einen benutzerdefinierten Cache-Provider mit ASP.NET MVC
- 25. So implementieren Sie die Transaktionsverwaltung in Mybatis-Projekt
- 26. CakePHP 3 - Entfernen Sie leeren Beitrag von der Seitennummerierung
- 27. So implementieren Sie die Volltext-Volltext-Suchmaschine
- 28. So implementieren Sie die Datenbankzugriffssteuerung auf Zeilenbasis
- 29. So implementieren Sie IAsyncOperationWithProgress
- 30. So implementieren Sie die automatische Speicherung
(+1) Heiss verdammt, ich hatte keine Ahnung, dass es da war. Ich muss diese Funktionalität mindestens 3 mal implementiert haben, und da war es schon ... – skaffman
cool, Übrigens, können Sie bitte erklären, wie Sitzung im Beispiel von SearchProductsController Code benötigt wird? Ich habe den Code durchgesehen, um ihn nicht nutzen zu können. – Nachiket
@Nachiket Sobald das Objekt 'PagedListHolder' erstellt wurde, wird es in die Sitzung eingefügt. Die Paginierung wird tatsächlich auf einem im Speicherobjekt ausgeführt. Beantwortet das deine Frage? Wenn nicht, können Sie klären? –