Show Menu
ARGOMENTI×

Abilitazione dell'esportazione JSON per un componente

I componenti possono essere adattati per generare l’esportazione JSON dei loro contenuti in base a un framework di modellazione.

Panoramica

JSON Export si basa su modelli models.htmlSling e sul framework Sling Model Exporter (che a sua volta si basa sulle annotazioni Jackson ).
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.

Definire un modello Sling per il componente

Per il componente deve essere definito innanzitutto un modello Sling.
Per un esempio di utilizzo di Sling Models, consultate l’articolo Sviluppo di 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)

In questo modo il componente può essere esportato in modo indipendente, utilizzando il .model selettore e l’ .json estensione.
Inoltre, questo specifica che la classe Sling Model può essere adattata all' ComponentExporter interfaccia.
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 ExporterConstants e ComponentExporter le classi provengono dal com.adobe.cq.export.json bundle.

Utilizzo di più selettori

Sebbene non sia un caso d’uso standard, è possibile configurare più selettori oltre al model selettore.
https://<server>:<port>/content/page.model.selector1.selector2.json

In tal caso, tuttavia, il model selettore deve essere il primo e l'estensione deve essere .json .

Annotazione dell'interfaccia del modello Sling

Per essere presa in considerazione dal framework JSON Exporter, l'interfaccia Model dovrebbe implementare l' ComponentExporter interfaccia (o ContainerExporter , nel caso di un componente contenitore).
La corrispondente interfaccia Sling Model ( MyComponent ) viene quindi annotata utilizzando le annotazioni Jackson per definire come deve essere esportata (serializzata).
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 ignorato utilizzando @JsonIgnore o @JsonProperty per rinominare la proprietà JSON.

Esempio

I componenti core hanno supportato l’esportazione JSON dalla release 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