Aktivieren eines JSON-Exports für eine Komponente

Komponenten können angepasst werden, um einen JSON-Export ihrer Inhalte basierend auf einem Modeler-Framework zu generieren.

Übersicht

The JSON Export is based on Sling Models, and on the Sling Model Exporter framework (which itself relies on Jackson annotations).

Das bedeutet, dass die Komponente über ein Sling-Modell verfügen muss, wenn JSON exportiert werden soll. Deshalb müssen Sie diese beiden Schritte befolgen, um einen JSON-Export für eine beliebige Komponente zu aktivieren.

Definieren eines Sling-Modells für die Komponente

Zunächst muss ein Sling-Modell für die Komponente definiert werden.

Hinweis

For an example of using Sling Models see the article Developing Sling Model Exporters in AEM.

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)

This ensures that your component could be exported on its own, using the .model selector and the .json extension.

Außerdem kann die Sling-Modell-Klasse dadurch in der ComponentExporter-Oberfläche übernommen werden.

Hinweis

Jackson-Anmerkungen werden in der Regel nicht auf der Ebene der Sling-Modell-Klasse festgelegt, sondern auf der Ebene der Modell-Oberfläche. Damit wird sichergestellt, dass der JSON-Export als Teil der Komponenten-API gewertet wird.

Hinweis

The ExporterConstants and ComponentExporter classes come from the com.adobe.cq.export.json bundle.

Mehrere Selektoren verwenden

Obwohl es sich nicht um einen Standard-Anwendungsfall handelt, ist es möglich, zusätzlich zum model Selektor mehrere Selektoren zu konfigurieren.

https://<server>:<port>/content/page.model.selector1.selector2.json

In einem solchen Fall muss der model Selektor jedoch der erste Selektor sein und die Erweiterung muss .jsonsein.

Anmerkungen für die Sling-Modell-Oberfläche

Damit sie im JSON-Exporter-Framework beachtet wird, sollte die ComponentExporter-Oberfläche (oder ContainerExporter bei Container-Komponenten) in der Modell-Oberfläche implementiert werden.

The corresponding Sling Model interface ( MyComponent) would be then annotated using Jackson annotations to define how it should be exported (serialized).

Es müssen die richtigen Anmerkungen für die Modell-Oberfläche angewendet werden, um zu definieren, welche Methoden serialisiert werden sollen. Standardmäßig werden alle Methoden serialisiert, die die gängigen Benennungskonventionen für Abfragemethoden einhalten. Ihre JSON-Eigenschaftsnamen werden dabei naturgemäß von den Namen der Abfragemethode abgeleitet. This can be prevented or overridden using @JsonIgnore or @JsonProperty to rename the JSON property.

Beispiel

Die Kernkomponenten unterstützen den JSON-Export seit der Version 1.1.0 der Kernkomponenten. Sie können 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

Weitere Informationen finden Sie unter:

Auf dieser Seite