AEM 6.4 heeft het einde van de uitgebreide ondersteuning bereikt en deze documentatie wordt niet meer bijgewerkt. Raadpleeg voor meer informatie onze technische ondersteuningsperioden. Ondersteunde versies zoeken hier.
Componenten kunnen worden aangepast om JSON-export van hun inhoud te genereren op basis van een modellerframework.
De JSON-export is gebaseerd op Verkoopmodellenen de Verkoopmodel exporteren kader (dat zelf op Jackson-annotaties).
Dit betekent dat de component een Sling Model moet hebben als het JSON moet uitvoeren. Daarom zult u deze twee stappen moeten volgen om de uitvoer van JSON op om het even welke component toe te laten.
Eerst moet een Sling Model voor de component worden bepaald.
Zie het artikel voor een voorbeeld van het gebruik van Sling Models Exporteurs van verkoopmodellen ontwikkelen in AEM.
De implementatieklasse Sling Model moet met het volgende worden geannoteerd:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Zo weet u zeker dat uw component zelfstandig kan worden geëxporteerd met de opdracht .model
en de .json
extensie.
Daarnaast wordt hiermee aangegeven dat de klasse Sling Model kan worden aangepast aan de ComponentExporter
interface.
Jackson-annotaties worden gewoonlijk niet opgegeven op het klasseniveau Sling Model, maar wel op het interfaceniveau Model. Hiermee zorgt u ervoor dat de JSON-export wordt beschouwd als onderdeel van de API voor componenten.
De ExporterConstants
en ComponentExporter
klassen komen uit com.adobe.cq.export.json
bundel.
Hoewel het geen standaard gebruikscase is, is het mogelijk om veelvoudige selecteurs naast te vormen model
kiezer.
https://<server>:<port>/content/page.model.selector1.selector2.json
In dat geval echter model
selector moet de eerste kiezer zijn en de extensie moet .json
.
Om door het JSON Exporter-kader in aanmerking te worden genomen, moet de modelinterface de ComponentExporter
interface (of ContainerExporter
, in het geval van een containercomponent).
De overeenkomstige interface van het Model van de Verkoop ( MyComponent
) wordt vervolgens geannoteerd met Jackson-annotaties om te bepalen hoe het (geserialiseerd) zou moeten worden uitgevoerd.
De modelinterface moet behoorlijk worden geannoteerd om te bepalen welke methodes zouden moeten in series worden vervaardigd. Standaard worden alle methoden die de gebruikelijke naamgevingsconventie voor getters respecteren, geserialiseerd en worden hun JSON-eigenschapnamen op natuurlijke wijze afgeleid van de namen van getters. Dit kan worden voorkomen of overschreven door @JsonIgnore
of @JsonProperty
om de naam van de JSON-eigenschap te wijzigen.
De Core Components hebben JSON-export ondersteund sinds de release 1.1.0 van de kerncomponenten en kan als referentie worden gebruikt.
Een voorbeeld vindt u in de implementatie Sling Model van de Image Core-component en de bijbehorende geannoteerde interface.
CODE VOOR GITHUB
U kunt de code van deze pagina op GitHub vinden
Zie voor meer informatie: