在我的组件的 JSP 中,如果我想使用currentNode
对象引用当前节点,它会抛出一个NullPointerException
,然后整个组件会抛出一个ScriptEvaluationException
我的组件 JSP 确实global.jsp
包含在顶部。我猜 currentNode 对象是由 global.jsp 创建的
奇怪的是,该组件仅在特定站点中引发这些异常。它在其他人身上效果很好。
这可能是什么原因?对象在什么条件下currentNode
为 NULL ?
也许您的组件是合成资源?如果你有这样的包含标签:
<cq:include path="mynode" resourceType="myapp/components/somecomponent" />
并且mynode
不存在,包含的组件将是渲染器,但是您不能在somecomponent
代码中引用节点属性。
在这种情况下,resource
变量将是 aSyntheticResource
并且currentNode
将是null
。
更新:
如果您真的不需要currentNode
butQueryManager
对象(正如您的评论所说),您可以使用resourceResolver
object 来获取它:
resourceResolver.adaptTo(Session.class).getWorkspace().getQueryManager()
我想补充一点,只有在拖放后包含组件后才会创建节点。因此,如果不是这种情况,您将不会拥有您的节点/content/your-site/