3

Adobe AEM (以前の CQ5) で、カスタム html をコンポーネントの一部に追加できるようにする最善の方法は何ですか?

使用可能な任意の parsys にコンポーネントを配置できるページがあると仮定しましょう (したがって、複数のインスタンスが可能であり、正確なパスはわかりません)。このコンポーネントのコンテンツに基づいて (標準のレンダリングに加えて) 一部のデータをパーツに追加する必要があります。問題は、レンダリングのためにコンポーネントのコードが JSP の後に実行されるため、リクエスト属性などによってレンダリングするデータを渡すことができないことです。

4

2 に答える 2

2

これらすべてを加味して考えてみると、次のようなワイルドな憶測が続きます。

これについて 100% 確信があるわけではありませんが、コンポーネント スクリプトはページに含まれている順序で実行されると常に想定していました。つまり、コンポーネント レンダリング スクリプトが実行されるまでに、ページは既にレンダリングされています。あなたが説明していることを不可能にします。

これが本当に必要な場合は、(少なくとも理論上は) head または headlibs.jsp で実行されるコードを記述し、ページ内のすべてのコンポーネントのリストを作成することができるはずです (基本的には jcr:content ノード ツリーを再帰的にたどるだけです)。見つけたリソース タイプのリストを作成し、それに基づいて、おそらくコンポーネントの非表示のプロパティにすることで、一連のクライアント ライブラリ カテゴリを含めます。

于 2013-05-15T08:16:38.610 に答える
0

コンポーネント「アップストリーム」または他のコンポーネントを含むラッパー コンポーネントを作成しました。

アップストリームの場合、リクエスト オブジェクトに属性を追加できます (または Cookie で遊ぶなど)。

「ラッパー」の場合 (構成パターン)、コンポーネントの他のコンポーネント。内部コンポーネントが探すリクエスト属性に String または Object を追加することで、含まれるコンポーネントにデータを渡します。包含後、ラッパー コンポーネントは、追加した属性を削除します (設定を誤って汚染しないようにします)。「内部コンポーネント」は、リクエスト オブジェクトの特定の属性を探す役割を担います。

<%!
public String getPassedData(HttpServletRequest req, String attrName) {
    final Object passed = (req.getAttribute(attrName)==null) ? "" : req.getAttribute(attrName);
    if ( override.equals("") )
        return passed.toString();
    }
%>
于 2013-05-22T20:26:52.423 に答える