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 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, será necessário seguir essas duas etapas para habilitar a exportação JSON em qualquer componente.
Primeiro, um modelo Sling deve ser definido para o componente.
Para obter um exemplo do uso de Modelos Sling, consulte o artigo Desenvolvimento de exportadores de modelos de sling no AEM.
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.
As anotações Jackson geralmente não são especificadas no nível de classe do Modelo Sling, mas no nível da interface do Modelo. Isso garante que a Exportação JSON seja considerada como parte da API do componente.
A variável ExporterConstants
e ComponentExporter
as classes são provenientes da com.adobe.cq.export.json
pacote.
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
.
Para ser considerada pela estrutura do Exportador JSON, a interface do Modelo deve implementar a ComponentExporter
(ou ContainerExporter
, no caso de um componente de contentor).
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 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 são serializados e derivarão seus 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.
Os Componentes principais são compatíveis com a exportação JSON e podem ser usados como referência.
Para obter um exemplo, consulte a implementação do Modelo Sling do Componente principal de imagem e sua interface anotada.
Para obter mais detalhes, consulte: