Aktivera JSON-export för en komponent enabling-json-export-for-a-component
Komponenter kan anpassas för att generera JSON-export av deras innehåll baserat på ett modellramverk.
Ökning overview
JSON-exporten baseras på Sling Models och ramverket Sling Model Exporter (som i sin tur är beroende av Jackson-anteckningar).
Detta innebär att komponenten måste ha en Sling-modell om den måste exportera JSON. Följ därför de här två stegen för att aktivera JSON-export för alla komponenter.
Definiera en segmentmodell för komponenten define-a-sling-model-for-the-component
Först måste en delningsmodell definieras för komponenten.
Implementeringsklassen för Sling-modellen måste kommenteras med följande:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Om du gör det kan du se till att din komponent exporteras fristående med .model-väljaren och .json-tillägget.
Dessutom anges att klassen Sling Model kan anpassas till gränssnittet ComponentExporter.
ExporterConstants och ComponentExporter kommer från paketet com.adobe.cq.export.json.Använda flera väljare multiple-selectors
Även om det inte är ett standardanvändningsfall går det att konfigurera flera väljare förutom väljaren model.
https://<server>:<port>/content/page.model.selector1.selector2.json
I så fall måste väljaren model vara den första väljaren och tillägget måste vara .json.
Anteckna gränssnittet för segmenteringsmodellen annotate-the-sling-model-interface
För att JSON-exportramverket ska kunna bearbeta det måste modellgränssnittet implementera gränssnittet ComponentExporter (eller ContainerExporter för en behållarkomponent).
Motsvarande Sling Model-gränssnitt ( MyComponent) kommenteras sedan med Jackson-anteckningar för att definiera hur det ska exporteras (serialiseras).
Modellgränssnittet måste kommenteras korrekt för att definiera vilka metoder som ska serialiseras. Som standard serialiseras alla metoder som respekterar den vanliga namnkonventionen för get-ters och härleder deras JSON-egenskapsnamn naturligt från get-namnen. Den här metoden kan förhindras eller åsidosättas med @JsonIgnore eller @JsonProperty för att byta namn på JSON-egenskapen.
Exempel example
Core Components har stöd för JSON-export sedan version 1.1.0 av kärnkomponenterna och kan användas som referens.
Ett exempel finns i Sling Model-implementeringen av Image Core-komponenten och dess kommenterade gränssnitt.
KOD PÅ GITHUB
Koden för den här sidan finns på GitHub
- Öppna aem-core-wcm-components-projekt på GitHub
- Hämta projektet som en ZIP-fil