Os componentes podem ser adaptados para gerar a exportação JSON de seu conteúdo com base em uma estrutura de modelador.
A exportação JSON é baseada em Modelos Sling e na estrutura Exportador de Modelo Sling (que depende ela própria de anotações Jackson).
Isso significa que o componente deve ter um Modelo Sling se precisar exportar JSON. Portanto, você precisará seguir estas duas etapas para ativar a exportação JSON em qualquer componente.
Primeiro, um Modelo Sling deve ser definido para o componente.
Para obter um exemplo de uso de Modelos Sling, consulte o artigo Desenvolvimento de exportadores de modelos Sling em AEM.
A classe de implementação do Modelo Sling deve ser anotada com o seguinte:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Isso garante que seu componente possa ser exportado sozinho, usando o seletor .model
e a extensão .json
.
Além disso, isso especifica que a classe Sling Model pode ser adaptada à interface ComponentExporter
.
As anotações Jackson geralmente não são especificadas no nível de classe do Sling Model, mas sim no nível de interface do Modelo. Isso garante que a exportação JSON seja considerada como parte da API do componente.
As classes ExporterConstants
e ComponentExporter
vêm do pacote com.adobe.cq.export.json
.
Embora não seja um caso de uso padrão, é possível configurar vários seletores além do seletor model
.
https://<server>:<port>/content/page.model.selector1.selector2.json
Entretanto, nesse caso, o seletor model
deve ser o primeiro seletor e a extensão deve ser .json
.
Para ser tida em conta pelo quadro do Exportador JSON, a interface Model deve implementar a interface ComponentExporter
(ou ContainerExporter
, no caso de um componente de container).
A interface correspondente do Modelo Sling ( MyComponent
) seria anotada usando anotações Jackson para definir como deve ser exportada (serializada).
A interface Modelo precisa ser anotada corretamente para definir quais métodos devem ser serializados. Por padrão, todos os métodos que respeitam a convenção de nomenclatura comum para getters serão serializados e derivarão seus nomes de propriedades JSON naturalmente dos nomes do getter. Isso pode ser evitado ou substituído usando @JsonIgnore
ou @JsonProperty
para renomear a propriedade JSON.
Os Componentes principais têm suporte para exportação JSON desde a versão 1.1.0 dos componentes principais e podem ser usados como referência.
Para ver um exemplo, consulte a implementação do Modelo Sling do Componente principal de imagem e sua interface anotada.
CÓDIGO NO GITHUB
Você pode encontrar o código desta página no GitHub
Para mais informações, consulte:
Componentes principais e o componente Fragmento do conteúdo