【发布时间】:2016-09-20 17:56:06
【问题描述】:
我有一个令人费解的问题。我会尽力解释。我正在开发基于 JCR 和 Java 的 Adobe CQ 代码库。
我有一个这样的 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 为空时我得到这个错误:
org.apache.sling.api.scripting.ScriptEvaluationException:在第 41 行处理 JSP 页面 /apps/citrixosd-responsive/components/content/footerNavigation/footerNavigation.jsp 时发生异常
第 41 行是这样的:
baseNode = currentNode.getNode("linkSet6").getNode("links");
我试过 size(),length() 等检查但无济于事。在执行getNode("links") 之前如何检查links 是否存在的任何提示。
【问题讨论】:
-
可能晚了,但我们从 Node & Property 转向 Resource & ValueMap 以简化代码 - 特别是在 JSP 中(不应该构建数据对象,例如地图列表)。有关简化代码的不同 API 的更多示例,请参阅 itgumby.github.io/blog/2016/better-aem-jsp-objects.html。