Присоединить слушателя к диалогу вашего ребенка компонента так, что он будет работать ваш JavaScript, когда диалог нагрузки. Этот JavaScript определит путь родительского компонента на основе пути дочернего компонента. Используя RESTful характер Apache Sling, вы просто сделаете запрос GET ресурсу родительского компонента, который вернет вам свойства этого ресурса. Затем вы можете обновить текущее открытое диалоговое окно со значением, которое вы хотите. Вся необходимая информация предоставляется в CQ Widgets API documentation.
Присоединить слушатель диалогового ребенка, указывая на внешний JavaScript файл:
<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>
Добавить пользовательский JavaScript в ClientLib доступен в режиме разработки. Это может быть 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;
}
}
У вас есть два разных вопроса. Вы хотите отобразить имя родителя в диалоговом окне дочернего элемента? Это будет использовать JavaScript. Или вы хотите отобразить имя родителя в отображаемом HTML? Это будет использовать JSP. – nateyolles