Ich habe ein Paging andSorting Repository, das eine Methode besitzt, die ein seitenfähiges Objekt akzeptiert. Ich habe auch einen Controller, der ein auslagerbares Objekt über die URL akzeptiert.
Mein Anwendungsfall ist folgender: Wenn ein Benutzer einen Seitengrößenparameter in der URL angibt, muss ich diesen Wert für das seitenfähige Objekt übernehmen. Wenn er nicht erwähnt, nehmen Sie einen Standardwert von 50.
Aber das auslagerbare Objekt wird jetzt standardmäßig auf 20 gesetzt.
Irgendwelche Vorschläge würden helfen
Wenn Sie von einem Spring Data PagingAndSortingRepository sprechen, können Sie die Standardseitengröße festlegen, indem Sie die @PageableDefault
für eine Controller-Methode wie folgt verwenden:
Oder Sie können einen globalen Standard konfigurieren, indem Sie Folgendes in Ihrer Spring-Konfiguration verwenden, wie unten in der XML- und Java-Konfiguration gezeigt.
Beachten Sie, dass neuere Versionen von Spring Data nullseitige Indexierung verwenden, während ältere Versionen 1 für die erste Seite verwendeten. Wenn Ihre Benutzeroberflächen-Seitenbibliothek 1 als erste Seite erwartet, können Sie die oneIndexedParameters-Eigenschaft auf true setzen:
public void setFallbackPageable (Seitenwechsel-FallbackPageable)
Konfiguriert die Auslagerungsdatei, die als Fallback verwendet werden soll, wenn kein PageableDefault oder PageableDefaults (Letzteres wird nur im Legacy-Modus unterstützt) können gefunden am zu lösenden Methodenparameter. Wenn Sie dies auf null setzen, Seien Sie sich bewusst, dass Ihre Controller-Methoden in ihnen mit null behandelt werden Fall keine umlagerungsfähigen Daten können in der Anfrage gefunden werden. Beachten Sie, dass das so ist benötigen Sie bot die Seite und die Größe Parameter mit der Anforderungen, da für keinen der Parameter ein Standardwert festgelegt wird verfügbar.
Parameter: fallbackPageable - die Auslagerungsdatei, die als allgemein verwendet werden soll Fallback.
In XML sieht das dann so aus:
%Vor%In Java Config sieht das wie folgt aus:
%Vor%Sie können unten in application.yml
festlegen %Vor%Und hier ein Beispiel für eine Spring Boot-Konfiguration. In der @Configuration-Klasse, die WebMvcConfigurerAdapter erweitert, legen Sie die Standardseitengröße auf 50 Elemente wie folgt fest:
%Vor%Die bereitgestellten Antworten sind sehr gut und sollten in den meisten Fällen helfen. Ich verwende jedoch einen etwas anderen Ansatz, der es mir erlaubt, verschiedene Standardseitengrößen pro Modell zu verwenden und kann mit Spring- oder Systemeigenschaften konfiguriert werden.
Bitte beachten Sie, dass dieser Ansatz eine grundlegende Einschränkung hat, nämlich, dass er keine Größe akzeptiert, die mit einer Anfrage kommt; Es verwendet jedoch Sortierinformationen. Wenn Sie also die Anzahl der zurückgegebenen Elemente pro Seite über Anforderungsparameter ändern möchten, ist diese Lösung nicht für Sie geeignet.
Als Erstes habe ich eine Dienstprogrammklasse (oder nur eine Methode in einem Controller) erstellt, die auf einer Anfrage Pageable
und konfigurierter Seitengröße eine neue Pageable
Instanzbasis erstellt.
In einer Steuerung füge ich eine Variable hinzu, die meine Standard-Seitengröße enthält (in diesem Fall ist der Standardwert 20, wenn keine Konfiguration bereitgestellt wird):
%Vor% Und dann überschreibe ich (d. h. erstelle eine neue Pageable
-Instanz) Standard-Seitengröße in der Methode zur Bearbeitung von Anforderungen:
Ich benutze verschiedene Standardseitengrößen für verschiedene Modelle / Controller, die dann sogar aus Systemeigenschaften konfiguriert werden können.
Sie können diese Annotation vor Ihrem Pageable-Parameter verwenden:
%Vor%Für Spring Boot 2.X haben Sie eine Reihe von Parametern:
%Vor%Tags und Links jpa spring-data-jpa spring spring-mvc