Adobe CQ5 を使用しています。互いに独立した 2 つのコンポーネントを作成しました。ただし、あるコンポーネントのデータを別のコンポーネントで使用したいと考えています。どうすればこれを達成できますか? 2 つのコンポーネントを互いに相互作用させるにはどうすればよいですか?
前もって感謝します。
コンポーネントがどれだけ密接に結合されているかに応じて、いくつかのオプションがあります (たとえば、両方を常に同時にページに配置しますか? テンプレートに組み込まれているのか、エディターによって配置されているのかなど)。
両方のコンポーネントが同じページにある場合、最も簡単なのは、1 つのコンポーネント内で変数を設定し、別のコンポーネントでそれを読み取ることです。たとえば、次のようになります。
foo.jsp
<c:set var="globalFooTitle" value="${properties.title}" scope="request"/>
bar.jsp
<c:out value="${globalFooTitle}">[Optional fallback value]</c:out>
@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", "");
}