gpt4 book ai didi

java - 在 getNode 方法之前检查链表是否不为空

转载 作者:行者123 更新时间:2023-12-01 21:18:06 26 4
gpt4 key购买 nike

我有一个令人费解的问题。我会尽力解释。我正在开发基于 JCR 和 Java 的 Adob​​e 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: An exception occurred processing JSP page /apps/citrixosd-responsive/components/content/footerNavigation/footerNavigation.jsp at line 41

第 41 行是这样的:

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

我尝试过 size()、length() 等来检查但无济于事。有关如何在执行 getNode("links") 之前检查 links 是否存在的任何提示。

最佳答案

您可以使用Session.nodeExists(String)来验证节点是否存在。方法。

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

session 对象通常通过ResourceResolver对象获取:resolver.adaptTo(Session.class)

无论如何 - 我建议跳入 Sling 抽象层。在这种情况下,使用 ResourceResourceResolver 会更方便(例如,当资源不存在时,getResource 将返回 null)。

关于java - 在 getNode 方法之前检查链表是否不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com