我正在做一个简单的CQ包括我的组件。
<cq:include path="banner" resourceType="generic/components/content/banner" />
但我没有使用内容对话框,而是使用了设计对话框。我理解设计对话框属性都存储在 / etc / designs / default。所以如果我尝试访问当前节点对象I.E.使用方法:
<%= currentNode.getName() %>
我得到一个空指针异常。为什么会这样?是否还有设计对话框的节点。理想情况下我正在尝试使用:
<%= currentNode.getIdentifier() %>
但是发现我甚至无法访问currentNode它只是抛出一个空指针。有关解决此问题的任何提示,是否需要通过设计对话框获取currentNode的另一条路径?非常感谢任何帮助!
答案 0 :(得分:4)
currentNode 对象包含请求的已解析JCR节点。 由于您使用的是设计对话框,因此您可以使用 currentDesign 对象访问所寻址资源的设计。并且为了访问存储在设计对话框中的属性,您可以使用 currentStyle 对象。
currentStyle.get("prop_name");
currentDesign.getId();
有关可用方法的信息,请参阅Style api和Design api。
由于我们有currentStyle对象,我们可以从中获取样式的路径,然后使用Session对象从该路径获取节点。之后,您可以对其执行所有节点操作。
Session session = resourceResolver.adaptTo(Session.class);
if(session.nodeExists(currentStyle.getPath())) {
Node node = session.getNode(currentStyle.getPath());
node.getIdentifier();
}
希望这有帮助。