Ativação de exportação em JSON para um componente

Os componentes podem ser adaptados para gerar a exportação JSON de seu conteúdo com base em uma estrutura de modelador.

Visão geral

A exportação JSON é baseada em Modelos Slinge no Exportador de Modelo Sling , que depende Anotações de Jackson).

Isso significa que o componente deve ter um Modelo do Sling se precisar exportar JSON. Portanto, será necessário seguir essas duas etapas para habilitar a exportação JSON em qualquer componente.

Definir um Modelo do Sling para o Componente

Primeiro, um Modelo do Sling deve ser definido para o componente.

OBSERVAÇÃO

Para obter um exemplo de uso de Modelos do Sling, consulte o artigo Desenvolvendo exportadores do modelo 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 a variável .model e o .json extensão.

Além disso, isso especifica que a classe do Modelo do Sling pode ser adaptada ao ComponentExporter interface.

OBSERVAÇÃO

As anotações Jackson geralmente não são especificadas no nível de classe do Modelo do Sling, mas no nível de interface do Modelo. Isso garante que a Exportação JSON seja considerada como parte da API do componente.

OBSERVAÇÃO

O ExporterConstants e ComponentExporter as classes vêm do com.adobe.cq.export.json pacote.

Uso de vários seletores

Embora não seja um caso de uso padrão, é possível configurar vários seletores além do model seletor.

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

No entanto, nesse caso, o model o seletor deve ser o primeiro seletor e a extensão deve ser .json.

Anotar a interface do modelo Sling

Para ser considerado pelo quadro do exportador JSON, a interface do modelo deve implementar a variável ComponentExporter interface (ou ContainerExporter, no caso de um componente de contêiner).

A interface correspondente do Modelo do Sling (MyComponent) seria anotada usando Anotações de Jackson para definir como ele deve ser exportado (serializado).

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 usual para getters serão serializados e derivarão seus nomes de propriedades JSON naturalmente dos nomes getter. Isso pode ser evitado ou substituído por @JsonIgnore ou @JsonProperty para renomear a propriedade JSON.

Exemplo

Os componentes principais oferecem suporte para exportação JSON e podem ser usadas como referência.

Para obter um exemplo, consulte a implementação do Modelo do Sling do Componente principal de imagem e sua interface anotada.

Para obter mais detalhes, consulte:

Nesta página