Spring und @JsonView mit mehreren Bezeichnern

9

Spring unterstützt @JsonView seit Version 4.1.

Eine Spring-Contoller-Methode (mit @RestController annotiert) mit @JsonView , die mehrere Bezeichner enthält, wurde mit der folgenden Ausnahme versehen:

%Vor%

Offenbar entsprechend der JsonViewResponseBodyAdvice s Javadoc gilt Folgendes:

  

Beachten Sie, dass trotz @JsonView mehr als eine Klasse zulässig ist   angegeben, wird die Verwendung für einen Antworttext nur unterstützt mit   genau ein Klassenargument. Berücksichtigen Sie die Verwendung einer zusammengesetzten Schnittstelle.

Gleichfalls, wenn das Methodenargument eines Controllers (mit @RequestBody annotiert) ebenfalls mit @JsonView versehen wird, das mehrere Bezeichner hat; nach dem JsonViewRequestBodyAdvice s Javadoc :

  

Beachten Sie, dass trotz @JsonView mehr als eine Klasse zulässig ist   angegeben, wird die Verwendung für eine Anfrage Körperberatung nur unterstützt mit   genau ein Klassenargument. Berücksichtigen Sie die Verwendung einer zusammengesetzten Schnittstelle.

Weiß jemand, ob eine Reparatur geplant ist? Meine aktuelle Frühlingsversion ist 4.2.4.

Dies wäre äußerst nützlich, um JSON-Ansichten für öffentliche, private (erweiterte öffentliche), zusammenfassende und detaillierte (erweiterte) Ansichten zu erstellen und diese dann in den Controller-Methoden zu kombinieren!

    
Mike Argyriou 30.12.2015, 19:05
quelle

1 Antwort

2

Wie in der Jackson JsonView-Dokumentation erklärt, "kann nur eine aktive Ansicht pro Serialisierung verwendet werden, aber aufgrund der Vererbung von Ansichten können Ansichten kombiniert werden via Aggregation ".

Konkret, wenn Sie sowohl Foo als auch Bar JsonViews verwenden möchten, definieren Sie eine FooBar -Schnittstelle, die sie wie folgt kombiniert:

%Vor%

Sie können dann Ihre Felder mit @JsonView(Foo.class) oder @JsonView(Bar.class) annotieren und @JsonView(FooBar.class) auf Controller-Ebene verwenden.

    
Sébastien Deleuze 24.01.2017 10:35
quelle

Tags und Links