Abilitazione dell’esportazione JSON per un componente enabling-json-export-for-a-component
I componenti possono essere adattati per generare l’esportazione JSON dei contenuti in base a un framework modellatore.
Panoramica overview
L'esportazione JSON è basata su modelli Sling e sul framework Sling Model Exporter (che a sua volta si basa su annotazioni Jackson).
Questo significa che il componente deve avere un modello Sling se deve esportare JSON. Pertanto, segui questi due passaggi per abilitare l’esportazione JSON su qualsiasi componente.
Definire un modello Sling per il componente define-a-sling-model-for-the-component
Innanzitutto, è necessario definire un modello Sling per il componente.
La classe di implementazione del modello Sling deve essere annotata con le seguenti annotazioni:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
In questo modo è possibile esportare il componente da solo, utilizzando il selettore .model
e l'estensione .json
.
Inoltre, questo specifica che la classe del modello Sling può essere adattata nell'interfaccia ComponentExporter
.
ExporterConstants
e ComponentExporter
provengono dal bundle com.adobe.cq.export.json
.Utilizzo di più selettori multiple-selectors
Anche se non è un caso d'uso standard, è possibile configurare più selettori oltre al selettore model
.
https://<server>:<port>/content/page.model.selector1.selector2.json
In questo caso, tuttavia, il selettore model
deve essere il primo e l'estensione deve essere .json
.
Annotare l’interfaccia del modello Sling annotate-the-sling-model-interface
Affinché il framework di esportazione JSON possa tenerne conto, l'interfaccia del modello deve implementare l'interfaccia ComponentExporter
(o ContainerExporter
, nel caso di un componente contenitore).
L'interfaccia del modello Sling corrispondente (MyComponent
) verrà quindi annotata utilizzando annotazioni Jackson per definire come deve essere esportata (serializzata).
L'interfaccia del modello deve essere annotata correttamente per definire quali metodi devono essere serializzati. Per impostazione predefinita, tutti i metodi che rispettano la consueta convenzione di denominazione per i getter vengono serializzati e deriveranno i loro nomi di proprietà JSON naturalmente dai nomi dei getter. Questa operazione può essere impedita o ignorata utilizzando @JsonIgnore
o @JsonProperty
per rinominare la proprietà JSON.
Esempio example
I Componenti core supportano l'esportazione JSON e possono essere utilizzati come riferimento.
Ad esempio, consulta l’implementazione del modello Sling del componente core Immagine e la relativa interfaccia con annotazioni.