Les composants peuvent être adaptés pour générer l’exportation JSON de leur contenu en fonction d’un framework de modeleur.
L’exportation JSON est basée sur des modèles Sling et sur le framework d’exportation des modèles Sling (lequel s’appuie lui-même sur des annotations Jackson).
Cela signifie que le composant doit disposer d’un modèle Sling s’il doit exporter le fichier JSON. Par conséquent, suivez ces deux étapes pour activer l’exportation JSON sur n’importe quel composant.
Il faut d’abord définir un modèle Sling pour le composant.
Pour obtenir un exemple d’utilisation des modèles Sling, reportez-vous à la section Développement d’exportateurs de modèles Sling dans AEM.
La classe de mise en œuvre des modèles Sling doit être annotée comme suit :
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Cela garantit que votre composant peut être exporté seul, à l’aide du sélecteur .model
de l’extension .json
.
En outre, cela indique que la classe de modèles Sling peut être adaptée dans l’interface ComponentExporter
.
Les annotations Jackson ne sont pas spécifiées au niveau de la classe de modèle Sling, mais plutôt au niveau de l’interface de modèle. Cela permet de s’assurer que l’exportation JSON est considérée comme faisant partie de l’API du composant.
Les classes ExporterConstants
et ComponentExporter
proviennent du lot com.adobe.cq.export.json
.
Bien qu’il ne s’agisse pas d’un cas d’utilisation standard, il est possible de configurer plusieurs sélecteurs en plus du sélecteur model
.
https://<server>:<port>/content/page.model.selector1.selector2.json
Toutefois, dans ce cas, le sélecteur model
doit être le premier et l’extension doit être .json
.
Pour être prise en compte par la structure de l’exportateur JSON, l’interface du modèle doit mettre en oeuvre la variable ComponentExporter
(ou ContainerExporter
, s’il existe un composant de conteneur).
L’interface de modèle Sling correspondante (MyComponent
) est alors marquée avec les annotations Jackson pour définir la manière dont les méthodes doivent être exportées (sérialisées).
L’interface de modèle doit être correctement annotée afin de définir les méthodes à sérialiser. Par défaut, toutes les méthodes qui respectent la convention de nommage habituelle pour les getters sont sérialisées et leur nom de propriété JSON est dérivé naturellement des noms getter. Cela peut être évité en utilisant @JsonIgnore
ou @JsonProperty
pour renommer la propriété JSON.
Les composants principaux prennent en charge l’exportation JSON depuis la version 1.1.0 des composants principaux et peut être utilisé comme référence.
Pour obtenir un exemple, consultez la mise en œuvre du modèle Sling sur le composant principal de l’image et son interface annotée.
CODE SUR GITHUB
Vous pouvez trouver le code de cette page sur GitHub.
Pour plus d’informations, voir :