Aktivieren eines JSON-Exports für eine Komponente enabling-json-export-for-a-component
Komponenten können angepasst werden, um einen JSON-Export ihrer Inhalte basierend auf einem Modeler-Framework zu generieren.
Übersicht overview
Der JSON-Export basiert auf Sling-Modellen und auf dem Framework des Sling Model Exporter (der sich wiederum auf Jackson-Anmerkungen stützt).
Das bedeutet, dass die Komponente über ein Sling-Modell verfügen muss, wenn sie JSON exportieren muss. Führen Sie daher diese beiden Schritte aus, um den JSON-Export für jede Komponente zu aktivieren.
Definieren eines Sling-Modells für die Komponente define-a-sling-model-for-the-component
Zunächst muss ein Sling-Modell für die Komponente definiert werden.
Die Implementierungsklasse des Sling-Modells muss wie folgt kommentiert werden:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Dadurch wird sichergestellt, dass Ihre Komponente mit dem .model
-Selektor und der .json
-Erweiterung eigenständig exportiert werden kann.
Außerdem kann die Sling-Modell-Klasse dadurch in der ComponentExporter
-Oberfläche übernommen werden.
ExporterConstants
und ComponentExporter
stammen aus dem com.adobe.cq.export.json
-Paket.Verwenden mehrerer Selektoren multiple-selectors
Obwohl dies kein Standardnutzungsszenario ist, können zusätzlich zum model
-Selektor mehrere Selektoren konfiguriert werden.
https://<server>:<port>/content/page.model.selector1.selector2.json
In einem solchen Fall muss der model
-Selektor jedoch der erste Selektor und .json
die Erweiterung sein.
Kommentieren der Sling-Modell-Oberfläche annotate-the-sling-model-interface
Um vom JSON Exporter-Framework berücksichtigt zu werden, sollte die Modellschnittstelle die ComponentExporter
-Schnittstelle (oder ContainerExporter
, wenn eine Container-Komponente vorhanden ist).
Für die entsprechende Sling-Modell-Oberfläche (MyComponent
) wird in diesem Fall über Jackson-Anmerkungen definiert, wie sie exportiert (serialisiert) werden soll.
Die Modellschnittstelle muss ordnungsgemäß kommentiert werden, um zu definieren, welche Methoden serialisiert werden sollen. Standardmäßig werden alle Methoden, die die übliche Benennungskonvention für Getter einhalten, serialisiert und leiten ihre JSON-Eigenschaftsnamen von den Getter-Namen aus. Um dies zu vermeiden bzw. zu überschreiben, benennen Sie die JSON-Eigenschaft mit @JsonIgnore
oder @JsonProperty
um.
Beispiel example
Die Kernkomponenten haben seit der Veröffentlichung den JSON-Export unterstützt 1.1.0 der Kernkomponenten und kann als Referenz verwendet werden.
Ein Beispiel ist die Sling-Modell-Implementierung der Bild-Kernkomponente und deren kommentierte Oberfläche.
CODE AUF GITHUB
Den Code dieser Seite finden Sie auf GitHub.
- Öffnen Sie das Projekt aem-core-wcm-components auf GitHub
- Laden Sie das Projekt als ZIP-Datei herunter
Verwandte Dokumentation related-documentation
Weitere Informationen finden Sie unter folgenden Themen: