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 modeling.

Panoramica

L'esportazione JSON si basa su modelli Sling e sul framework Sling Model Exporter (che si basa su annotazioni Jackson).

Questo significa che il componente deve avere un modello Sling se deve esportare JSON. Pertanto, dovrai seguire questi due passaggi per abilitare l’esportazione JSON su qualsiasi componente.

Definire un modello Sling per il componente

Innanzitutto, per il componente deve essere definito un modello Sling.

NOTA

Per un esempio di utilizzo dei modelli Sling, consulta l’articolo Sviluppo di esportatori di modelli Sling in AEM.

La classe di implementazione del modello Sling deve essere annotata con quanto segue:

@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 da solo utilizzando il selettore .model e l’ estensione .json .

Inoltre, questo specifica che la classe Sling Model può essere adattata all'interfaccia ComponentExporter.

NOTA

Le annotazioni Jackson non vengono solitamente specificate a livello di classe Sling Model, ma a livello di interfaccia Model. In questo modo, l’esportazione JSON viene considerata come parte dell’API del componente.

NOTA

Le classi ExporterConstants e ComponentExporter provengono dal bundle com.adobe.cq.export.json.

Utilizzo di più selettori

Sebbene non sia un caso d’uso standard, è possibile configurare più selettori in aggiunta 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.

Annota l'interfaccia del modello Sling

Per essere presi in considerazione dal framework JSON Exporter, l’interfaccia Model deve implementare l’ interfaccia ComponentExporter (o ContainerExporter, nel caso di un componente contenitore).

L'interfaccia Sling Model corrispondente (MyComponent) viene quindi annotata utilizzando Annotazioni Jackson per definire come deve essere esportata (serializzata).

Per definire quali metodi devono essere serializzati, è necessario annotare correttamente l’interfaccia Model. Per impostazione predefinita, tutti i metodi che rispettano la convenzione di denominazione usuale per i getter verranno serializzati e deriveranno naturalmente i loro nomi di 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 supportano l’esportazione JSON e possono essere utilizzati come riferimento.

Per un esempio, vedi l’implementazione del modello Sling del componente di base immagine e la relativa interfaccia annotata.

Per maggiori dettagli vedi:

In questa pagina