I componenti possono essere adattati per generare l’esportazione JSON dei loro contenuti in base a un framework di modellazione.
L'esportazione JSON si basa su Sling Models e sul framework Sling Model Exporter (che si basa su Jackson annotations).
Questo significa che il componente deve avere un modello Sling se deve esportare JSON. Pertanto, per abilitare l’esportazione JSON su qualsiasi componente dovrete seguire questi due passaggi.
Per il componente deve essere definito innanzitutto un modello Sling.
Per un esempio di utilizzo di Sling Models, vedere l'articolo Developing Sling Model Exporter in AEM.
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)
Questo garantisce che il componente possa essere esportato autonomamente, utilizzando il selettore .model
e l'estensione .json
.
Inoltre, questo specifica che la classe Sling Model può essere adattata all'interfaccia ComponentExporter
.
Le annotazioni Jackson non vengono in genere specificate a livello di classe Sling Model, ma a livello di interfaccia Model. In questo modo, assicuratevi che l’esportazione JSON sia considerata parte dell’API del componente.
Le classi ExporterConstants
e ComponentExporter
provengono dal pacchetto com.adobe.cq.export.json
.
Sebbene non sia un caso d'uso standard, è possibile configurare più selettori oltre al selettore model
.
https://<server>:<port>/content/page.model.selector1.selector2.json
In tal caso, tuttavia, il selettore model
deve essere il primo selettore e l'estensione deve essere .json
.
Per essere presa in considerazione dal framework JSON Exporter, l'interfaccia Model deve implementare l'interfaccia ComponentExporter
(o ContainerExporter
, nel caso di un componente contenitore).
L'interfaccia del modello Sling corrispondente ( MyComponent
) verrà quindi annotata utilizzando le annotazioni di Jackson per definire come esportare (serializzato).
L'interfaccia Model deve essere annotata correttamente per definire i metodi da serializzare. Per impostazione predefinita, tutti i metodi che rispettano le consuete convenzioni di denominazione per i getter saranno serializzati e deriveranno naturalmente i nomi delle loro proprietà JSON dai nomi dei getter. Questo può essere impedito o sostituito utilizzando @JsonIgnore
o @JsonProperty
per rinominare la proprietà JSON.
I componenti core supportano l'esportazione JSON dalla versione 1.1.0 dei componenti core e possono essere utilizzati come riferimento.
Per un esempio, consultate Implementazione del modello Sling del componente Image Core e la relativa interfaccia annotata.
CODICE SU GITHUB
Puoi trovare il codice di questa pagina su GitHub
Per maggiori dettagli, consulta:
Argomento Frammenti di contenuto nella guida utente di Assets
Componenti di base e componente Frammento di contenuto