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.
Überblick overview
Der JSON-Export basiert auf Sling-Modellen und auf dem Sling Model Exporter-Framework, das selbst auf Jackson-Anmerkungen beruht.
Dieser Ansatz 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 eigenständig mit dem .model-Selektor und der .json-Erweiterung exportiert werden kann.
Darüber hinaus gibt sie an, dass die Sling-Modell-Klasse in die ComponentExporter-Schnittstelle angepasst werden kann.
ExporterConstants und ComponentExporter stammen aus dem com.adobe.cq.export.json-Paket.Mehrere Selektoren verwenden 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 jedoch der model Selektor der erste Selektor sein und die Erweiterung muss .json sein.
Kommentieren der Sling-Modell-Oberfläche annotate-the-sling-model-interface
Damit das JSON Exporter-Framework es verarbeiten kann, muss die Modelloberfläche die ComponentExporter-Schnittstelle implementieren (oder für eine Container-Komponente ContainerExporter).
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 sein, um zu definieren, welche Methoden serialisiert werden. Standardmäßig werden alle Methoden, die die übliche Namenskonvention für Getter einhalten, serialisiert und leiten ihre JSON-Eigenschaftsnamen natürlich von den Getter-Namen ab. Dieser Ansatz kann mithilfe von @JsonIgnore oder @JsonProperty verhindert oder überschrieben werden, um die JSON-Eigenschaft umzubenennen.
Beispiel example
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.
- Öffnen Sie das Projekt aem-core-wcm-components auf GitHub
- Laden Sie das Projekt als ZIP-Datei herunter