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 è basata su Modelli Slinge Esportatore di modelli Sling quadro (su cui si basa 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 autonomamente, utilizzando .model selettore e .json estensione.

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

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

La ExporterConstants e ComponentExporter le lezioni vengono da com.adobe.cq.export.json pacchetto.

Utilizzo di più selettori

Sebbene non sia un caso d’uso standard, è possibile configurare più selettori in aggiunta al model selettore.

https://<server>:<port>/content/page.model.selector1.selector2.json

Tuttavia, in tal caso, model Il selettore deve essere il primo selettore e l'estensione deve essere .json.

Annotare l’interfaccia del modello Sling

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

L'interfaccia del modello Sling corrispondente ( MyComponent) viene quindi annotata utilizzando Annotazioni Jackson per definire come esportare (serializzato).

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 sostituito con @JsonIgnore o @JsonProperty per rinominare la proprietà JSON.

Esempio

I componenti core supportano l’esportazione JSON a partire dalla versione 1.1.0 dei componenti core e può essere utilizzato come riferimento.

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

CODICE SU GITHUB

Puoi trovare il codice di questa pagina su GitHub

Per maggiori dettagli vedi:

In questa pagina