3

Adobe CQ5 を使用しています。互いに独立した 2 つのコンポーネントを作成しました。ただし、あるコンポーネントのデータを別のコンポーネントで使用したいと考えています。どうすればこれを達成できますか? 2 つのコンポーネントを互いに相互作用させるにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

3

コンポーネントがどれだけ密接に結合されているかに応じて、いくつかのオプションがあります (たとえば、両方を常に同時にページに配置しますか? テンプレートに組み込まれているのか、エディターによって配置されているのかなど)。

両方のコンポーネントが同じページにある場合、最も簡単なのは、1 つのコンポーネント内で変数を設定し、別のコンポーネントでそれを読み取ることです。たとえば、次のようになります。

foo.jsp

<c:set var="globalFooTitle" value="${properties.title}" scope="request"/>

bar.jsp

<c:out value="${globalFooTitle}">[Optional fallback value]</c:out>
于 2014-01-25T16:11:57.513 に答える
2

@kmb の回答には何も問題はありませんが、私はほとんどの場合、低レベルのものよりも高レベルの Api を使用することを好みます。CQ の場合、これは JCR ノード API の代わりに sling リソース API を使用することを意味します。

彼がレイアウトしたのと同じページ上の 2 つのコンポーネントの構造を想定すると、これは次のようになります。

Resource r = resourceResolver.getResource(currentResource, "../component2");
if(r != null) {
    ValueMap props = r.adaptTo(ValueMap.class);
    String somePropertyValue = props.get("someProperty", "");
}
于 2014-01-26T00:35:14.373 に答える