I componenti possono essere adattati per generare l’esportazione JSON dei contenuti in base a un framework modellatore.
L’esportazione JSON si basa su Modelli Sling, e sul Esportatore modello Sling (che 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.
Innanzitutto, è necessario definire un modello Sling per il componente.
Per un esempio di utilizzo dei modelli Sling, vedi Sviluppo di esportatori di modelli Sling nell’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 da solo utilizzando .model
e il .json
estensione.
Inoltre, questo specifica che la classe del modello Sling può essere adattata in ComponentExporter
di rete.
Le annotazioni Jackson non vengono specificate a livello di classe del modello Sling, ma piuttosto a livello di interfaccia del modello. In questo modo, l’esportazione JSON deve essere considerata parte dell’API del componente.
Il ExporterConstants
e ComponentExporter
le classi provengono da com.adobe.cq.export.json
pacchetto.
Anche se non è un caso di utilizzo standard, è possibile configurare più selettori oltre 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
.
Affinché il framework di esportazione JSON possa tenere conto di, l’interfaccia modello deve implementare ComponentExporter
interfaccia (o ContainerExporter
, se è presente un componente contenitore).
Interfaccia corrispondente del modello Sling ( MyComponent
) verrebbe quindi annotato utilizzando Annotazioni Jackson per definire la modalità di esportazione (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 derivano i loro nomi di proprietà JSON naturalmente dai nomi dei getter. Questo può essere impedito o sovrascritto utilizzando @JsonIgnore
o @JsonProperty
per rinominare la proprietà JSON.
I Componenti core hanno supportato l’esportazione JSON dalla versione 1.1.0 dei Componenti core e possono essere utilizzati come riferimento.
Ad esempio, consulta l’implementazione del modello Sling del componente core Immagine e la relativa interfaccia con annotazioni.
CODICE SU GITHUB
Puoi trovare il codice di questa pagina su GitHub
Per ulteriori dettagli, vedi: