コンポーネントのJSON エクスポートを有効にする enabling-json-export-for-a-component
モデラーフレームワークに基づいてコンテンツの JSON 書き出しを生成するように、コンポーネントを適応させることができます。
概要 overview
JSON書き出しは、Sling ModelおよびSling Model Exporter フレームワーク(それ自体はJackson注釈に依存)に基づいています。
このアプローチは、JSONを書き出す必要がある場合、コンポーネントにSling モデルが必要であることを意味します。 したがって、次の 2 つの手順に従って、任意のコンポーネントで JSON 書き出しを有効にします。
コンポーネントに Sling Model を定義する define-a-sling-model-for-the-component
最初に、コンポーネントにSling モデルを定義する必要があります。
Sling Model の実装クラスに次のような注釈を付ける必要があります。
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
これにより、.model セレクターと.json拡張機能を使用して、独自にコンポーネントを書き出すことができます。
また、Sling Model クラスをComponentExporter インターフェイスに適応させることができることを指定します。
ExporterConstants クラスと ComponentExporter クラスは com.adobe.cq.export.json バンドルから取得されます。複数のセレクターを使用 multiple-selectors
標準的なユースケースではありませんが、model セレクターに加えて複数のセレクターを設定することができます。
https://<server>:<port>/content/page.model.selector1.selector2.json
ただし、そのような場合、model セレクターは最初のセレクターで、拡張子は.jsonである必要があります。
Sling Model インターフェイスに注釈を付ける annotate-the-sling-model-interface
JSON エクスポーターフレームワークで処理するには、モデルインターフェイスでComponentExporter インターフェイス(コンテナコンポーネントの場合はContainerExporter)を実装する必要があります。
対応する Sling モデルインターフェイス(MyComponent)には、Jackson 注釈を使用して注釈が付けられ、どのように書き出し(シリアル化)が行われるかが定義されます。
どのメソッドをシリアル化するかを定義するには、モデル インターフェイスに適切に注釈を付ける必要があります。 デフォルトでは、ゲッターの通常の命名規則を尊重するすべてのメソッドはシリアル化され、JSON プロパティ名はゲッター名から自然に派生します。 このアプローチは、@JsonIgnoreまたは@JsonPropertyを使用してJSON プロパティの名前を変更することで、防止または上書きできます。
例 example
コアコンポーネントは、リリース 1.1.0 以降、JSON 書き出しをサポートしており、参照として使用できます。
例えば、画像コアコンポーネントの Sling Model 実装とその注釈されたインターフェイスを参照してください。
GitHub のコード
このページのコードは GitHub にあります
- GitHubでaem-core-wcm-components プロジェクトを開きます
- プロジェクトを ZIP ファイルとしてダウンロードします