は、あなたの子コンポーネントのダイアログにリスナーを接続します。そのJavaScriptは、子コンポーネントのパスに基づいて親コンポーネントのパスを決定します。 Apache SlingのRESTfulな性質を利用して、コンポーネントのResourceの親にGETリクエストを行うだけで、そのリソースのプロパティが返されます。現在開いているダイアログを必要な値で更新することができます。必要な情報はすべてCQ Widgets API documentationにあります。
<instructions
jcr:primaryType="cq:Widget"
fieldLabel="Instructions"
xtype="displayfield">
<listeners
jcr:primaryType="nt:unstructured"
loadcontent="function(field, record, path){ mynamespace.updateWithParentName(field, record, path) }"
/>
</instructions>
オーサリングモードで使用できるClientLibにカスタムJavaScriptを追加します。
は、外部のJavaScriptファイルを指して、あなたの子ダイアログにリスナーを接続します。それはcq.authoring.editor
となります。Using Client-Side Librariesを参照してください。これは、ダイアログが開くたびに実行されます。この例では、同期GET要求を行い、displayfield
を更新します。データの内容、親コンポーネントの検索方法、ヌルチェックを追加する必要があるかどうかに応じて更新します。
var mynamespace = {};
mynamespace.updateWithParentName = function(field, record, path) {
var parentPath = getParentPath(path);
var parentComponent = CQ.shared.HTTP.eval(CQ.shared.HTTP.noCaching(parentPath + '.json'));
var parentName = parentComponent.name; // assuming the property name is "name"
field.setValue('Parent component name is: ' + parentName);
/* Go up two levels accounting for the current component and the parsys */
function getParentPath(path) {
var parts = path.split('/');
var parentPath = parts.slice(0, parts.length - 2).join('/');
return parentPath;
}
}
あなたは2つの異なる質問があります。子のダイアログに親の名前を表示しますか?それはJavaScriptを使用します。または、レンダリングされたHTMLに親の名前を表示したいですか?それはJSPを使用します。 – nateyolles