2016-09-20 2 views
0

У меня есть своего рода запутанный вопрос. Я попытаюсь изо всех сил объяснить. Я работаю над кодовой базой Adobe CQ, которая является JCR и Java.Проверьте, не был ли linklist не пустым до метода getNode

У меня есть заявление Java ArrayList вроде этого:

ArrayList<Map<String,Property>> list6 = new ArrayList<Map<String,Property>>(); 

Кроме того у меня есть связанный список определяется CQ/Java кода в других местах в коде. Этот связанный список называется linkSet6. Каждый «узел» в списке указан по имени links

Я пытаюсь получить контент от linkSet6 до ArrayList list6.

Проблема, с которой я столкнулся, - linkSet6, всегда существует, но она может иметь или не иметь links. Я делаю это, и это прекрасно работает, когда есть "ссылки"

if(currentNode != null && currentNode.hasNode("linkSet6")) { 
    baseNode = currentNode.getNode("linkSet6").getNode("links"); 
    list6 = Utilities.parseStructuredMultifield(baseNode); 
} 

Но когда linkSet6 является emptyI получаю эту ошибку:

org.apache.sling.api.scripting.ScriptEvaluationException: An exception occurred processing JSP page /apps/citrixosd-responsive/components/content/footerNavigation/footerNavigation.jsp at line 41

линии 41 это:

baseNode = currentNode.getNode("linkSet6").getNode("links"); 

I Проверено значение size(), length() и т. д., но безрезультатно. Любой совет о том, как проверить, есть ли links, есть getNode("links").

+0

может быть поздно, но мы отошли от узла и ценностей ресурсов и ValueMap упростить код - особенно в JSPs (которые не должны строить таких как списки карт). См. Http://itgumby.github.io/blog/2016/better-aem-jsp-objects.html для получения дополнительных примеров различных API, которые упрощают ваш код. –

ответ

2

Вы можете проверить, существует ли узел, используя метод Session.nodeExists(String).

if (session.nodeExists(currentNode.getPath + "/linkSet6")) { 
    ... 
} 

Объект сеанса обычно приобретается через ResourceResolver объекта: resolver.adaptTo(Session.class)

Во всяком случае - я рекомендую прыгать в слинг слой абстракции. Работа с Resource и ResourceResolver более удобна в таком случае (например, getResource вернет вам нуль, когда ресурс не существует).

1

hasNode («ссылки») возвращает истину, если узел связи существует

Смежные вопросы