Wie erzwingen Spring HATEOAS-Ressourcen, um ein leeres eingebettetes Array zu rendern?

9

Ich habe die folgende Controller-Methode:

%Vor%

Also versuche ich im Grunde, eine Set<> von Exercise -Entitäten für eine bestimmte Session verfügbar zu machen. Wenn das Entity der Übungen leer ist, bekomme ich eine JSON-Darstellung wie folgt:

%Vor%

Im Grunde gibt es also keine eingebettete Entität, während etwas wie das Folgende bevorzugt wäre:

%Vor%

irgendeine Idee, wie man das durchsetzt?

    
ChrisGeo 17.05.2015, 12:18
quelle

3 Antworten

11

Das Problem hier ist, dass es ohne zusätzlichen Aufwand nicht möglich ist herauszufinden, dass die leere Sammlung eine Sammlung für Exercise ist. Spring HATEOAS hat allerdings eine Helferklasse, um das zu umgehen:

%Vor%

Mit EmbeddedWrapper können Sie Objekte, die zu Resource oder Resources hinzugefügt werden sollen, explizit als eingebettet markieren und möglicherweise sogar manuell die Rel definieren, unter denen sie angezeigt werden sollen. Wie Sie oben sehen können, erlaubt Ihnen der Helfer auch, eine leere Sammlung eines gegebenen Typs zur _embedded -Klausel hinzuzufügen.

    
Oliver Gierke 18.05.2015, 07:39
quelle
0

Man kann die Methode PagedResourceAssembler :: toEmptyResource () verwenden. Zum Beispiel funktioniert das Folgende:

%Vor%

Ich wette, es funktioniert auch mit anderen ResourceAssemblern.

    
mancini0 20.01.2018 00:44
quelle
-1

Spring verwendet standardmäßig den Jackson-Parser zum Serialisieren / Deserialisieren von json. Gemäß Ссылка hat Jackson eine Funktion namens WRITE_EMPTY_JSON_ARRAYS , die standardmäßig aktiviert ist. Vielleicht ist WRITE_EMPTY_JSON_ARRAYS in Ihrer Konfiguration auf false gesetzt. Bitte überprüfen Sie Ihre Nachrichtenkonverter Konfiguration.

    
Thilak 17.05.2015 15:18
quelle

Tags und Links