2017-01-11 14 views
1

Я использую AEM 6.2 и пытаюсь получить значение «damFolderPath» из «jcr: content» узла.Как получить «damFolderPath» из узла в AEM?

Screenshot

я попытался это:

//resourcePath = "/content/projects/newyear-1" 
Resource resource = resourceResolver.getResource(resourcePath); 
Node tNode = resource.adaptTo(Node.class); 
Property prop = tNode.getProperty("jcr:content/damFolderPath"); 
log.info("\n...Output 1:"+tNode.hasProperty("damFolderPath")); 
log.info("\n...Output 2:"+prop.toString()); 

Выход 1: ложные

Выход 2: Недвижимость [PropertyDelegate {родитель =/содержание/проекты/Newyear-1/км/JCR: content: {jcr: primaryType = nt: неструктурированный, detailsHref = /projects/details.html, jcr: title = kms, active = true, cq: template =/apps/swa/projects/templates/default, damFolderPath =/content/dam/projects/newyear-1/kms, c overUrl =/content/dam/projects/newyear-1/kms/cover, sling: resourceType = cq/gui/components/projects/admin/card/projectcontent, links = {...}, dashboard = {...} }, property = damFolderPath =/content/dam/projects/newyear-1/kms}]

Я вижу, что он есть, но как получить его из output2?

ответ

3

Вы можете прочитать значение, не достигнув уровня API JCR.

С точки зрения Sling, jcr:content является разрешимым ресурсом.

String resourcePath = "/content/projects/newyear-1/jcr:content" 
Resource jcrContentResource = resourceResolver.getResource(resourcePath); 
ValueMap valueMap = jcrContentResource.getValueMap(); 
String damFolderPath = valueMap.get("damFolderPath", String.class); 

Если по какой-либо причине, вы настаиваете на использовании API JCR, то, что вы видите в Output 2 является по умолчанию String представление Property реализации (в качестве возвращаемого toString()).

Интерфейс Property позволяет получить значение свойства с помощью одного из нескольких, имеющих тип-типа геттеров.

prop.getString() 

поможет вам путь /content/dam/projects/newyear-1

Смотрите также: getValue, getDouble, getBoolean, getDate и т.д.