Ativação de exportação em JSON para um componente enabling-json-export-for-a-component
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 overview
A exportação JSON é baseada em Modelos Slinge no Exportador de modelo Sling quadro regulamentar (que, por sua vez, se baseia Anotações Jackson).
Isso significa que o componente deve ter um Modelo Sling se precisar exportar JSON. Portanto, siga estas duas etapas para ativar a exportação JSON em qualquer componente.
Definir um modelo do Sling para o componente define-a-sling-model-for-the-component
Primeiro, um modelo Sling deve ser definido para o componente.
A classe de implementação do Modelo do 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 .model
seletor e o .json
extensão.
Além disso, especifica que a classe Modelo do Sling pode ser adaptada na variável ComponentExporter
interface.
ExporterConstants
e ComponentExporter
as classes são provenientes da com.adobe.cq.export.json
pacote.Uso de vários seletores multiple-selectors
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, a model
seletor deve ser o primeiro seletor e a extensão deve ser .json
.
Anotar a interface do modelo Sling annotate-the-sling-model-interface
Para ser considerada pela estrutura do Exportador JSON, a interface do Modelo deve implementar a ComponentExporter
(ou ContainerExporter
, se houver um componente de contêiner).
A interface do modelo Sling correspondente ( MyComponent
) seria então anotado usando Anotações Jackson para definir como ele deve ser exportado (serializado).
A interface do modelo deve 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 são serializados e derivam os nomes de propriedade JSON naturalmente dos nomes de getter. Isso pode ser evitado ou substituído usando @JsonIgnore
ou @JsonProperty
para renomear a propriedade JSON.
Exemplo example
Os Componentes principais são compatíveis com a exportação JSON desde a versão 1.1.0 dos componentes principais e podem ser usadas como referência.
Para obter 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
- Abra o projeto aem-core-wcm-components no GitHub
- Baixar o projeto como um arquivo ZIP
Documentação relacionada related-documentation
Para obter mais detalhes, consulte o seguinte: