Festlegen der Standardseitengröße für das umsetzbare JPA-Objekt

9

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

    
Kousick Shanmugam Nagaraj 20.11.2014, 05:31
quelle

7 Antworten

33

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:

%Vor%

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%     
Alan Hay 20.11.2014 08:22
quelle
11

Sie können unten in application.yml

festlegen %Vor%     
quelle
7

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%     
Rori Stumpf 16.12.2014 22:39
quelle
0

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.

%Vor%

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:

%Vor%

Ich benutze verschiedene Standardseitengrößen für verschiedene Modelle / Controller, die dann sogar aus Systemeigenschaften konfiguriert werden können.

    
Tom 11.09.2015 15:13
quelle
0

Dies ist immer noch nicht gut dokumentiert, aber für jeden, der diesen Artikel findet, hat der RepositoryRestConfigurerAdapter alle Einstellungen für die Frühjahrsdatenruhe dort.

%Vor%     
jasondt 17.05.2016 18:48
quelle
0

Sie können diese Annotation vor Ihrem Pageable-Parameter verwenden:

%Vor%     
Hadi hashemi 28.10.2017 06:54
quelle
0

Für Spring Boot 2.X haben Sie eine Reihe von Parametern:

%Vor%     
Przemek Nowak 30.03.2018 13:27
quelle