为组件启用JSON导出 enabling-json-export-for-a-component
组件可以适应为基于建模器框架生成其内容的JSON导出。
概述 overview
JSON导出基于Sling模型和Sling模型导出程序框架(它本身依赖于Jackson注释)。
此方法意味着组件必须具有Sling模型(如果它必须导出JSON)。 因此,请按照以下两个步骤对任何组件启用JSON导出。
为组件定义Sling模型 define-a-sling-model-for-the-component
首先,必须为元件定义Sling模型。
NOTE
有关使用Sling模型的示例,请参阅在AEM中开发Sling模型导出程序。
Sling模型实现类必须使用以下内容进行注释:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
这样做可确保使用.model选择器和.json扩展自行导出组件。
此外,它指定Sling模型类可以调整到ComponentExporter接口中。
NOTE
Jackson注释不是在Sling模型类级别指定的,而是在“模型”界面级别指定的。 此方法可确保将JSON导出视为组件API的一部分。
NOTE
ExporterConstants和ComponentExporter类来自com.adobe.cq.export.json捆绑包。使用多个选择器 multiple-selectors
虽然这不是标准用例,但除了model选择器之外,还可以配置多个选择器。
https://<server>:<port>/content/page.model.selector1.selector2.json
但是,在这种情况下,model选择器必须是第一个选择器,扩展名必须为.json。
在Sling模型界面中添加批注 annotate-the-sling-model-interface
为了使JSON导出器框架能够处理它,模型接口必须实现ComponentExporter接口(或容器组件的ContainerExporter)。
随后将使用MyComponentJackson注释对相应的Sling模型接口()进行注释,以定义应如何导出(序列化)。
必须正确注释模型接口以定义序列化的方法。 默认情况下,所有符合getter的常规命名约定的方法都将进行序列化,并从getter名称自然派生其JSON属性名称。 可以使用@JsonIgnore或@JsonProperty阻止或覆盖此方法以重命名JSON属性。
示例 example
自核心组件的1.1.0版本以来,核心组件一直支持JSON导出,可以将其用作参考。
有关示例,请参阅图像核心组件的Sling模型实施及其注释的界面。
GITHUB上的代码
您可以在GitHub上找到此页面的代码
- 在GitHub上打开aem-core-wcm-components项目
- 将项目下载为ZIP文件
相关文档 related-documentation
recommendation-more-help
51c6a92d-a39d-46d7-8e3e-2db9a31c06a2